43 votes

Standard délégués en C#

Il y a quelques Délégués prédéfinis en C#

Je sais que ces:

EventHandler // Default event callbacks
EventHandler<T> // Default event callbacks with custom parameter (inheriting from EventArgs)
Action // Function without return value and without parameter
Action<T1, T2, T3, T4> // Function without return value and 1-4 parameters
Func<T1, T2, T3, T4, TResult> // Methos with 0-4 parameters and one result type
Predicate<T> // equivalent to Func<T, bool>

Il y a beaucoup plus de cas particuliers et de formulaire généré des pièces de la charpente, mais elles sont souvent bonnes à utiliser dans l'auto code écrit.

Si vous connaissez déjà un peu plus utile de les ajouter. Sinon, c'est répondu.

26voto

Jon Skeet Points 692016

Ils ne sont pas prédéfinis dans C#. Elles sont définies par le cadre.

L' Action et Func délégué familles sont plus larges que ce que vous avez indiqué - ils aller jusqu'à

Action<T1, T2, T3, T4>

et

Func<T1, T2, T3, T4, TResult>

Une autre commune-ish dans .NET 2.0 pour la liste de manipulation (avant LINQ) est - Predicate<T>.

Pour travailler avec des threads:

ThreadStart
ParameterizedThreadStart
WaitCallback
TimerCallback
AsyncCallback

3voto

Brian Genisio Points 30777

J'aime utiliser Predicate<T> ce qui est équivalent à Func<T, bool>

2voto

NileshChauhan Points 3126

Goto Réflecteur de Recherche pour le Système.MulticastDelegate et vérifier les types dérivés. Vous obtiendrez la liste de tous les Délégués, que vous êtes à la recherche pour.

1voto

Derek Davidson PST Points 1331

J'ai également venir à travers

Comparison<T> 

dans le

List.Sort(Comparison<T>)

méthode générique. Je suppose que c'est maintenant équivalent à:

Func<T1, T2, int> 

0voto

Kent Boogaart Points 97432

J'utilise WaitCallback et ThreadStart assez souvent pour eux d'obtenir une mention.

Si vous connaissez la signature du délégué que vous êtes après, mais vous ne savez pas si il y a un existant délégué avec signature que vous pouvez utiliser, vous pouvez suivre ces instructions sur mon blog pour en trouver un.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X