Func<Classification, string> test1 = c => c.Id = "x";
Func<Classification, string> test2 = c => { return c.Id = "x";};
J'ai travaillé avec lambda de près d'un an ou maintenant et assez raisonnable avec eux, mais aujourd'hui, je regardais NBuilder et vu un Func bizarre qui ne semble pas correspondre aux exemples . J'ai joué de toute façon et ça se vérifie mais je ne comprends pas pourquoi les compilations ci-dessus et encore moins les runs. Nous faisons une mission et donc l'expression n'évalue rien, n'est-ce pas ??? ou nonC# Lambda comportement déconcertant
donc je pensais que peut-être quelque chose que j'ai manqué lié à lambda, donc j'ai essayé quelque chose d'autre:
[Test]
public void AmIGoingMad()
{
Assert.That(Test(),Is.Null); // not sure what to expect - compile fail?
}
public string Test()
{
string subject = "";
return subject = "Matt";
}
Effectivement AmIGoingMad
échoue et « Matt » est en fait retourné.
Pourquoi avons-nous ce comportement? Où est-ce documenté? Est-ce purement un raccourci syntaxique? J'ai l'impression d'avoir manqué quelque chose de fondamental dans ma compréhension de lambda ou même de C#.
Se sentir bête.
sujet == "Matt"? –
Oh, ça fait des années que je fais ça ... Je n'ai jamais pensé ... Je serais damné. IPerson personne = null; if ((par exemple en tant que personne)! = Null) {} –
Je pense que vous devez clarifier. "Où est-ce documenté?" <- qu'est ce que "ceci" dans cette phrase? "Est-ce purement ..." - encore une fois, qu'est-ce que "ça"? "ce comportement", quel comportement? Cette déclaration renvoie une valeur? Cela = affecte une valeur? Que "Matt" n'est pas nul? –