English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
C# contient des types de delegates génériques intégrés Func et Action, donc dans la plupart des cas, vous n'avez pas besoin de définir manuellement des delegates personnalisés.
Func est un delegate générique inclus dans l'espace de noms System. Il a zéro ou plusieurs paramètres d'entrée et un out Les paramètres. Le dernier paramètre est considéré comme le paramètre out.
Le delegate Func représente un delegate avec un type de retour.
Func définit un paramètre in et un paramètre out dans l'espace de noms System du delegate, comme indiqué ci-dessous :
namespace System { public delegate TResult Func<in T, out TResult>(T arg); }
Le dernier paramètre de la balise尖括号<> est considéré comme le type de retour, et les autres paramètres sont considérés comme les types de paramètres d'entrée, comme montré dans le graphique suivant.
Le delegate Func avec deux paramètres d'entrée et un paramètre de sortie est présenté comme suit.
Le delegate Func suivant accepte deux paramètres de type int et retourne une valeur de type int :
Func<int, int, int> sum;
Vous pouvez attribuer n'importe quelle méthode à la délégation func ci-dessus, qui nécessite deuxintparamètres et retourne uneintvaleur.
class Program { static int Sum(int x, int y) { return x + y; } static void Main(string[] args) { Func<int,int, int> add = Sum; int result = add(10, 10); Console.WriteLine(result); } }
20
Le type de delegate Func peut inclure de 0 à16différents types de paramètres d'entrée. Cependant, il doit contenir un paramètre out pour le résultat. Par exemple, le delegate Func suivant n'a aucun paramètre d'entrée et ne contient que des paramètres out.
Func<int> getRandomNumber;
Func doit avoir au moins 0 paramètres d'entrée, jusqu'à16un paramètre d'entrée, retourne le type générique en fonction de la valeur de retour. Il doit y avoir une valeur de retour, pas void.
Func<int> indique qu'il n'y a pas de paramètres d'entrée, et le delegate retourne un int.
Func<object,string,int> indique que les paramètres entrants sont object, string, et le delegate retourne un int.
Func<object,string,int> indique que les paramètres entrants sont object, string, et le delegate retourne un int.
Func<T1,T2,T3,int> indique que les paramètres entrants sont de type T1,T2,T3(générique), delegate qui retourne un int.
Vous pouvez utiliser la clé delegate pour attribuer une méthode anonyme au delegate Func.
Func<int> getRandomNumber = delegate() { Random rnd = new Random(); return rnd.Next(1, 100); };
Le delegate Func peut également être utilisé avec une expression lambda, comme indiqué ci-dessous :
Func<int> getRandomNumber = () => new Random().Next()1, 100); //Ou Func<int, int, int> Sum = (x, y) => x + y;
Func est un type de délégation intégré.
Le type de délégation Func doit retourner une valeur.
Le type de délégation Func peut avoir de zéro à16Un paramètre d'entrée.
Le type de délégation Func ne permet pas les paramètres ref et out.
Le type de délégation Func peut être utilisé avec des méthodes anonymes ou des expressions lambda.