C# - délégué Anonyme
Comme les Méthodes Anonymes ,les délégués, je suis déclarant en bas à l'aide de "délégué" mot-clé sont délégués anonymes?
namespace Test
{
public delegate void MyDelegate();
class Program
{
static void Main(string[] args)
{
DelegateTest tst = new DelegateTest();
tst.Chaining();
Console.ReadKey(true);
}
}
class DelegateTest
{
public event MyDelegate del;
public void Chaining()
{
del += delegate { Console.WriteLine("Hello World"); };
del += delegate { Console.WriteLine("Good Things"); };
del += delegate { Console.WriteLine("Wonderful World"); };
del();
}
}
}
OriginalL'auteur user160677 | 2009-11-17
Vous devez vous connecter pour publier un commentaire.
Votre délégué de la collection dans l'exemple de points à un certain nombre de méthodes anonymes. Un délégué est "juste un pointeur de méthode". Il n'a pas d'importance si elle pointe vers une véritable méthode ou une méthode anonyme.
Veuillez voir http://msdn.microsoft.com/en-us/library/0yw3tz5k(SV.80).aspx
OriginalL'auteur Brian Rasmussen
Il n'y a pas une telle chose comme un "délégué anonyme" (ou plutôt, qui n'est pas reconnu terme dans la spécification C#, ou tout autre .NET liée à la spécification je suis au courant).
Il y a des fonctions anonymes, qui comprennent les méthodes anonymes et les expressions lambda.
Votre montre le code de la plaine de vieux méthodes anonymes - bien qu'ils sont à l'aide de l'une des caractéristiques les expressions lambda n'ont pas: la capacité à ne pas exprimer les paramètres à tous les lorsque vous ne se soucient pas d'eux.
les méthodes" est correct. "Les délégués anonymes" est incorrecte. Vous dites que vous "voyez habituellement [il] en tous lieux" - pourriez-vous citer des endroits spécifiques?
Pas dans tout document officiel, mais d'habitude la terminologie utilisée par les Internautes. ... Comme SI lui-même.. stackoverflow.com/search?q=anonymous+delegate .... regarde donc comme nous sommes allés en habitude d'utiliser un mauvais terme.
Yup, il ya beaucoup de la terminologie qui est utilisée de manière incorrecte 🙁
Merci pour les précisions...(il regarde comme si j'avais quelque chose à écrire sur mon prochain blog)... 🙂
OriginalL'auteur Jon Skeet
C'est correct, vous avez affecté un certain nombre de méthodes anonymes à un événement.
Si vous utilisez une version plus récente de c#, vous pouvez aussi faire quelque chose de similaire avec les lambdas. par exemple:
OriginalL'auteur Greg D
Oui, ils sont anonymes, les délégués (ou les plus spécifiques, les délégués de l'appel d'une méthode anonyme).
OriginalL'auteur Lucero
Oui. Anonyme délégués ne peuvent pas être visés directement par leur nom, en utilisant les
delegate(){}
syntaxe signifie qu'ils sont anonymes.OriginalL'auteur barkmadley
Votre délégué n'est pas anonyme. Il est appelé MyDelegate.
Délégué à la CLR est une classe qui dérive de Système.MulticastDelegate et dans votre cas, il est appelé MyDelegate.
Vous ne pouvez pas dériver directement MulticastDelegate, le compilateur C# va vous arrêter.
Dans votre code lorsque vous affectez des délégués à del, le type/nom du délégué est déduit par le compilateur car vous avez déclaré del d'un événement de type MyDelegate.
OriginalL'auteur Petar Repac
Ils sont délégués à des méthodes anonymes. C'est une façon de rendre les méthodes anonymes, qui était disponible depuis .NET 2.0. Avec .NET 3.0, vous pouvez également utiliser des expressions lambda qui sont plus simples à écrire (mais compiler le même code). Je suppose que c'est ce que vous entendez par "anonymouse méthodes". Mais vraiment, ils sont une seule et même chose.
OriginalL'auteur Vilx-