2008-10-07 23 views
6

Odpowiedzi na ostatni wpis (Wszelkie szanse na naśladowanie razy() metoda Ruby w C#?) Należy użyć operatora => w przykładach użycia. Co robi ten operator? Nie mogę znaleźć tego w mojej książce C# i ciężko jest szukać takich symboli w Internecie. (Nie mogłem tego znaleźć).Co oznacza operator C# =>?

Odpowiedz

15

To naprawdę nie jest operator jako taki, jest częścią składni wyrażeń lambda. W szczególności => jest bitem, który oddziela parametry od treści wyrażenia lambda.

Czy Twoja książka obejmuje C# 3.0? Jeśli nie, to nie będzie zawierać wyrażeń lambda. Jeśli tak, to naprawdę powinien je pokryć! Mamy nadzieję, że dzięki właściwej terminologii będziesz mógł znaleźć ją w spisie treści lub indeksie.

EDYCJA: Więcej informacji: Wyrażenie lambda jest fragmentem cukru syntaktycznego, aby utworzyć wystąpienie delegata lub drzewa wyrażeń (to ostatnie jest nowością dla .NET 3.5). Wyrażenia Lambda prawie całkowicie zastępują metody anonimowe (z C# 2.0), chociaż nie wspierają one pojęcia "nie dbają o parametry" w sposób, w jaki robią to metody anonimowe.

+0

Ach, moja książka nie obejmuje C# 3.0, więc nic dziwnego, że nie mogła go znaleźć! –

+0

Czy mogę zapytać, co masz na myśli, mówiąc: "Nie dbam o parametry" w sposób, w jaki robią to metody anonimowe ?. Dzięki! – xanatos

+1

@xanatos: Na przykład, aby utworzyć 'EventHandler', który nie używa nadawcy lub argumentów, możesz użyć' delegate {Console.WriteLine ("Called"); } 'bez określania listy parametrów. Można go przekształcić w * dowolny * typ delegata z typem zwracanej pustki i wszystkimi parametrami "w". –

1

To będzie dla wyrażenia lambda:

http://msdn.microsoft.com/en-us/library/bb397687.aspx

Przykładem jest tutaj:

MyControl.OnMouseDown += (sender, e) => 
{ 
    // Do something in the mouse down event 
}; 

Oto Ja stworzyłem delegata zdarzenia wyrażenie lambda. Zasadniczo oszczędza mi to konieczności stworzenia w klasie osobnej funkcji.

1

Wyrażenie lambda jest anonimową funkcją, która może zawierać wyrażenia i instrukcje i może być używana do tworzenia delegatów lub typów drzewek wyrażeń.

Wszystkie wyrażenia lambda używają operatora lambda =>, który jest odczytywany jako "przechodzi do". Po lewej stronie operatora lambda określa parametry wejściowe (jeśli w ogóle), a po prawej stronie posiada blok ekspresji lub oświadczenie

http://msdn.microsoft.com/en-us/library/bb397687.aspx

1

=> żeton o nazwie operatora lambda.

Jest używany w wyrażeniach lambda do oddzielenia zmiennych wejściowych po lewej stronie od treści lambda po prawej stronie.

MSDN