Func<Classification, string> test1 = c => c.Id = "x";
Func<Classification, string> test2 = c => { return c.Id = "x";};
Я работал с лямбдами почти год или около того, и довольно разумно с ними, но сегодня я смотрел на NBuilder и увидел странный Func, который, кажется, не соответствует примерам. Я все равно поиграл, и это подтвердилось, но я не понимаю, почему вышеупомянутые компиляции, не говоря уже о запуске. Мы выполняем задание, и, таким образом, выражение ничего не оценивает, верно ??? или нет
Поэтому я подумал, что, может быть, что-то упустил, связанное с лямбдой, поэтому я попробовал что-то еще:
[Test]
public void AmIGoingMad()
{
Assert.That(Test(),Is.Null); // not sure what to expect - compile fail?
}
public string Test()
{
string subject = "";
return subject = "Matt";
}
Конечно, AmIGoingMad
терпит неудачу, и "Matt" фактически возвращается.
Почему у нас такое поведение? Где это задокументировано? Это чисто синтаксический ярлык?
Мне кажется, что я упустил что-то фундаментальное в моем понимании лямбды или даже C #.
Чувство тупости.