Zasadniczo mówi „Daję ci tę (s,b)
” i wracają mi s*b
lub coś, a jeśli używasz lambda wyrażeń, ale może to być coś takiego: Daję ci tę (s,b)
i zrobić coś z im w bloku oświadczenie jak:
{
int k = a+b;
k = Math.Blah(k);
return k;
}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Wyrażenie jest nienazwaną metodą napisaną zamiast instancji delegata. Kompilator natychmiast przekształca wyrażenia lambda albo:
- Instancja delegat
- Wyrażenie Drzewo
delegate int Transformer(int i);
class Test{
static void Main(){
Transformer square = x => x*x;
Console.WriteLine(square(3));
}
}
mogliśmy przerobić go tak:
delegate int Transformer(int i);
class Test{
static void Main(){
Transformer square = Square;
Console.WriteLine(square(3));
}
static int Square (int x) {return x*x;}
}
Wyrażenie lambda ma następującą postać:
(parameters) => expression or statement-block
w poprzednim przykładzie występuje pojedynczy parametr x
i ekspresja jest x*x
w przykładzie X odpowiada do parametru i, a wyrażenie x*x
odpowiada typowi zwrotnemu int
, w związku z czym jest kompatybilne z delegatem transformatora; Kod
delegate int Transformer (int i);
lambda ekspresja może być blok oświadczenie zamiast wyrażeniem. Możemy przerobić nasz przykład w następujący sposób:
x => {return x*x;}
drzewa wyrażenie, typu Expression<T>
, reprezentujących kod wewnątrz wyrażenia lambda w przesuwny modelu obiektowego.Umożliwia to późniejszą interpretację wyrażenia lambda w czasie wykonywania (należy sprawdzić "Wyrażenie zapytania" dla LINQ)
Operator Lambda. Zgodnie z tym, co przeczytałem, jest wymawiane "idzie do", gdy głośno się wypowiada (tak jak na marginesie). –
http://msdn.microsoft.com/en-us/library/bb397687.aspx, aby uzyskać więcej informacji .... –