10
votes

Qu'est-ce que () => signifie dans c #?

J'ai lu via le code source pour MOQ et je suis tombé sur le Après le test de l'unité: xxx

et pour la vie de moi, je ne me souviens pas quoi () => réellement. Je pense que cela a quelque chose à voir avec des méthodes anonymes ou de la Lambdas. Et je suis sûr que je sais ce que ça fait, je ne me souviens tout simplement pas pour le moment ...

et de faire les choses pire ... Google n'est pas beaucoup d'aide et NI Stackoverflow

peut-il me donner une réponse rapide à une jolie question noobaine?


2 commentaires

Se souvient de moi quand je cherchais des informations sur "* =" dans SQL ... pas l'opérateur convivial de la plupart des moteurs de recherche ...


Si je comprends cela correctement, cela signifie que si les fois.atleast (0) est faux, une exception est lancée. Ai-je raison? Cela ne fonctionnera-t-il que sur le mode "débogage"?


6 Réponses :


13
votes

Rechercher Stackoverflow pour "Lambda".

Spécialement: P>

a();


5 commentaires

Ce n'était pas moi, mais probablement parce que "le débordement de la pile de recherche pour Lambda" n'est pas très utile compte tenu de l'OP reconnaissant qu'il savait que cela ait quelque chose à voir avec Lambdas. +1 de moi, cependant.


Quelqu'un probablement la descendait avant de vous élargir sur votre première réponse. En regardant votre réponse maintenant, cependant, c'est vraiment très utile.


@Earwicker: Comme si vous n'aviez pas assez de représentant. : P


Pour une raison quelconque, je pensais que vous n'étiez pas autorisé à voter - Grub dans des questions que vous avez répondu ... Où est-ce que j'ai eu cette idée de: p


Je l'ai dit au début. "Vous devez rechercher ceci et ceci" n'est pas une réponse utile. Si vous donnez également un lien vers la recherche et les résultats les plus importants, je considère qu'il est utile. Et maintenant bien sûr, alors mon bowvote s'est retourné.



0
votes

Je ne programme pas en C #, mais googling "C # lambda" fourni Ce lien qui répond à votre question !!!


0 commentaires

12
votes

() => est une expression nullaire lambda. Il représente une fonction anonyme qui est transmise à affirmer. Elle est appelée quelque part à l'intérieur de cette fonction.

void DoThisTwice(Action a) { 
    a();
    a();
}
Action printHello = () => Console.Write("Hello ");
DoThisTwice(printHello);

// prints "Hello Hello "


1 commentaires

Ainsi, essentiellement, le code de test de l'unité crée une méthode anonyme qui appelle une méthode qui est ensuite exécutée par la méthode des lancers qui gère l'exception lancée et affirme que la bonne exception a été lancée?



2
votes

C'est la définition d'une fonction lambda (anonyme). Essentiellement, c'est un moyen de définir une fonction en ligne, puisque Assert.throws prend une fonction comme argument et tente de l'exécuter (puis de vérifier qu'elle jette une exception donnée).

Essentiellement, l'extrait que vous avez là-bas est un test unitaire qui permet de bien comprendre les temps.ATEast (0) jette une erreur argumentOfrangeException. La fonction Lambda est nécessaire (au lieu d'essayer simplement d'appeler la fonction Times.Atleast directement à partir d'Aser.throws) afin de transmettre l'argument approprié pour le test - dans ce cas 0.

Article MSDN KB sur le sujet ici: http://msdn.microsoft .Com / fr-US / bibliothèque / bb882516.aspx


0 commentaires

4
votes
() => Times.AtLeast(0)
() indicates that the lambda function has no parameters or return value.=> indicates that a block of code is to follow.Times.AtLeast(0) calls the Times class's static method AtLeast with a parameter of 0.

0 commentaires

9
votes

C'est une expression de Lambda. La syntaxe la plus courante utilise un paramètre, donc il n'y a pas de parenthèses nécessaire autour de celui-ci: xxx pré>

si le nombre de paramètres est autrefois autre qu'un, des parenthèses sont nécessaires: P>

() => Times.AtLeast(0)


0 commentaires