Perdonami se questo grida novizio ma cosa significa "=>
" in C#? Sono stato a una presentazione la scorsa settimana e questo operatore (credo) è stato utilizzato nel contesto di ORM. Non stavo davvero prestando attenzione alle specifiche della sintassi fino a quando non sono tornato ai miei appunti.Che cosa significa "=>"?
risposta
In C# il lambda operator è scritto "=>" (di solito si pronuncia "va a" quando leggere ad alta voce). Significa che gli argomenti a sinistra vengono passati nel blocco di codice (funzione lambda/delegato anonimo) sulla destra.
Quindi, se si dispone di un Func o di un'azione (o uno qualsiasi dei loro cugini con più parametri di tipo), è possibile assegnare un'espressione lambda anziché richiedere un'istanza di un delegato o un metodo separato per l'elaborazione posticipata:
//creates a Func that can be called later
Func<int,bool> f = i => i <= 10;
//calls the function with 12 substituted as the parameter
bool ret = f(12);
Non ho mai notato quanto sia confuso quando attacchi lambda con "minore o uguale". Finisce per assomigliare a tutte le frecce che puntano verso i. –
È un operatore lambda, parte di un lambda expression.
Tutte le espressioni lambda utilizzano l'operatore lambda =>, che viene letto come "va a". Il lato sinistro dell'operatore lambda specifica i parametri di input (se presenti) e il lato destro contiene l'espressione o il blocco di dichiarazione . L'espressione lambda x => x * x viene letta "x passa a x volte x".
È una scorciatoia per la dichiarazione di lambda.
i => i++
è (quasi) la stessa di scrittura:
delegate(int i)
{
i++;
}
Nel contesto:
void DoSomething(Action<int> doSomething)
{
doSomething(1);
}
DoSomething(delegate(int i) { i++; });
//declares an anonymous method
//and passes it to DoSomething
che è (quasi) la stessa di scrittura:
void increment(int i)
{
i++;
}
Solo senza dargli un nome, ti permette di dichiarare una funzione in-line, nota come funzione "anonima".
Quando detto ad alta voce l'operatore è il lambda (passa a) operatore che aiuta a definire il delegato anonimo che si sta definendo nel lambda.
Un luogo comune per vedere questo è con un gestore di eventi. Ti capiterà spesso di avere aa evento pagina tipo di carico che viene gestito da una lambda con il seguente codice:
this.Loaded += (o, e) => {
// code
}
Hai definito una gestione dell'evento Loaded anonimo metodo (non ha un nome) utilizzando un espressione lambda. Avrebbe letto "o, e va a ... definizione del metodo con foo".
È la sintassi per dichiarare una funzione anonima, nota in C# come "espressione lambda".
Ad esempio, (int p) => p * 2
rappresenta una funzione che prende un numero intero e lo moltiplica per due.
Tecnicamente, l'intero corpo (int p) => p * 2 è un'espressione lambda. Il => è solo l'operatore lambda. –
Questo è l '"operatore lambda" e lo leggi come "passa a". Diciamo che ha avuto la dichiarazione:
doSomething(x => x + " hi");
è possibile sostituire il "=>" nella vostra mente con questo:
doSomething(delegate (string x) { return x + " hi" });
Come si può vedere, offre un diavolo di una scorciatoia. Il compilatore calcola il tipo di variabile che stai passando e ti permette di eliminare la firma della funzione e il bracketing per il codice in cui stai passando le variabili di firma.
Puoi anche leggerlo come "diventa" o "mappa" –
Ho sentito "iniezioni", "frecce", qualcosa di volgare che non dirò qui, e un altro paio. Il mio preferito finora è "uguale a quello più grande". – womp
Ho appena detto "lambda" ora, invece di preoccuparmi delle innumerevoli variazioni possibili. –
Dal momento che nessuno ne ha parlato ancora, in VB.NET devi usare la parola chiave funzione invece di =>, in questo modo:
dim func = function() true
'or
dim func1 = function(x, y) x + y
dim result = func() ' result is True
dim result1 = func1(5, 2) ' result is 7
Vengo nuovamente respinto senza motivo. Il tizio che ha posto la domanda ha detto che è un ragazzo VB.NET, quindi offrire una spiegazione in termini di VB.NET ha senso. –
Non hai risposto alla sua domanda specifica, ma non vedo perché dargli un'informazione che potrebbe aiutarlo a relazionarsi meglio meriterebbe un downvote. +1 per negarlo. – Brandon
+1, stavo per aggiungere anche questa risposta ... Pazzesco che qualcuno lo sottovalutasse, è molto utile sapere per un ragazzo VB.NET ... –
- 1. Che cosa significa%>% significa in R?
- 2. Che cosa significa >> e 0xfffffff8?
- 3. Groovy, cosa significa -> significa
- 4. Che cosa significa ">>>" in javascript?
- 5. Che cosa significa __PACKAGE __-> {foo}?
- 6. Che cosa significa "<=>" in MySQL?
- 7. Che cosa significa '=>' l'operatore in C#?
- 8. "<! DOCTYPE html>" Che cosa significa?
- 9. Che cosa significa "> ul" in SASS?
- 10. Che cosa significa <*> in Perl?
- 11. Cosa significa '=>'?
- 12. Cosa significa "->"?
- 13. Che cosa significa <in TFrom, out TTo> significa?
- 14. Che cosa significa notation() => significa e come usarlo?
- 15. cosa significa ">>>" in java?
- 16. cosa significa (stato = {}) => stato significa
- 17. ASP.NET: che cosa significa "#" che inizia un <% %>?
- 18. Cosa significa iteratore-> secondo?
- 19. Cosa significa ">>" in java
- 20. In F # cosa significa l'operatore >>?
- 21. Cosa significa "=>" in PHP?
- 22. Cosa significa "() =>" in C#?
- 23. Cosa significa -> in C++?
- 24. Cosa significa -> _ => in Scala/Lift?
- 25. Che cosa significa __utma?
- 26. Che cosa significa hibernate.default_schema?
- 27. Che cosa significa "log *"?
- 28. Che cosa significa scalabilità?
- 29. Che cosa significa costruire?
- 30. Che cosa significa CultureInfo.InvariantCulture?
Questo è un duplicato. Non riesco a trovarne uno che sia uno. –
Questa è una ricerca molto difficile. Anche su Google. –
Non sapeva che si chiamava "operatore lambda". –