Func<Classification, string> test1 = c => c.Id = "x";
Func<Classification, string> test2 = c => { return c.Id = "x";};
Run Code Online (Sandbox Code Playgroud)
我已经和lambda一起工作了将近一年左右,并且相当合理,但今天我正在看NBuilder并看到一个奇怪的Func,似乎与这些例子不符.无论如何我都玩了它但是我不知道为什么上面的编译更不用说了.我们正在做一个作业,因此表达式不评估任何东西,对吧??? 或不
所以我想也许我错过了与lambda有关的东西,所以我尝试了别的东西:
[Test]
public void AmIGoingMad()
{
Assert.That(Test(),Is.Null); // not sure what to expect - compile fail?
}
public string Test()
{
string subject = "";
return subject = "Matt";
}
Run Code Online (Sandbox Code Playgroud)
果然AmIGoingMad失败了,"Matt"实际上已经归还了.
为什么我们有这种行为?这记录在哪里?它纯粹是一种句法快捷方式吗?
我觉得我在理解lambda甚至C#时都错过了一些基本的东西.
感到愚蠢.
赋值语句具有返回值 - 该值是已分配的值.即使C有这个,所以你可以把如下的作业链接在一起:
a = b = c = d = 10;
Run Code Online (Sandbox Code Playgroud)
对d的赋值的返回值为10,它被赋值给c,依此类推.