mvc中的lamdba表达式

h_bladem 2012-06-25 11:12:12
现在在学mvc看到Html.TextBoxFor(model => model.Title)这个lamdba表达式不是很理解!程序是怎么知道model是什么的
...全文
106 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
threenewbee 2012-06-25
  • 打赏
  • 举报
回复
修改下:
List<int> TakeWhile(List<int> data, Func<int, int, bool> f)
{
List<int> result = new List<int>();
int index = 0;
foreach (int i in data)
{
if (f(i, index)) result.Add(i);
index++;
}
return result;
}

注意,这个f是一个委托,也就是TakeWhile调用你的Lambda表达式。
形参名字无所谓。

(n, index) => n >= index

或者

(a, b) => a >= b

是等价的。

你的委托接受两个参数,分别是集合当前元素和当前元素的下标。
并且返回一个bool表示是否取值。
bdmh 2012-06-25
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

int[] numbers = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 };

var firstSmallNumbers = numbers.TakeWhile((n, index) => n >= index);
或者解释下程序是怎么知道这个里面的index是什么东西的
[/Quote]
顺序的找numbers
threenewbee 2012-06-25
  • 打赏
  • 举报
回复
TakeWhile内部实现如下:(部分实现为了让你理解,使用了简化和变形)

List<int> TakeWhile(List<int> data, Func<int, int, bool> f)
{
List<int> result = new List<int>();
int index = 0;
bool isTake = false;
foreach (int i in data)
{
if (!isTake && f(i, index)) isTake = true;
if (isTake) result.Add(i);
}
return result;
}
h_bladem 2012-06-25
  • 打赏
  • 举报
回复
int[] numbers = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 };

var firstSmallNumbers = numbers.TakeWhile((n, index) => n >= index);
或者解释下程序是怎么知道这个里面的index是什么东西的
threenewbee 2012-06-25
  • 打赏
  • 举报
回复
model是强类型视图定义的(在页面最上面有定义),并且使用Controller传入的。

model => model.Title

这是一个委托,由TextBoxFor函数调用,它给你一个Model参数,你返回Model中用于产生TextBox的字段
tangxingangtom 2012-06-25
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]
model是强类型视图定义的(在页面最上面有定义),并且使用Controller传入的。

model => model.Title

这是一个委托,由TextBoxFor函数调用,它给你一个Model参数,你返回Model中用于产生TextBox的字段
[/Quote]

我的空间里好像有一些lamdba表达式的示例,,你可以去空间里下,,大约有几十个示例吧,几乎所有函数都有使用到

62,073

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧