English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
C# contiene tipi di delegati generici integrati come Func e Action, quindi nella maggior parte dei casi non è necessario definire manualmente delegati personalizzati.
Il tipo di delegato Func è un tipo di delegato generico incluso nel namespace System. Ha zero o più parametri di input e un out parametro. L'ultimo parametro viene considerato come parametro out
Il delegato Func rappresenta un delegato con tipo di ritorno.
Il tipo di delegato Func nel namespace System definisce un parametro in e un parametro out del delegato, come segue:
namespace System { public delegate TResult Func<in T, out TResult>(T arg); }
L'ultimo parametro tra parentesi angolari <> viene considerato come tipo di ritorno, gli altri parametri vengono considerati come tipi di parametri di input, come mostrato nell'immagine di seguito.
Il delegato Func con due parametri di input e uno di output sarà come segue.
Il seguente delegato Func accetta due parametri di tipo int e restituisce un valore di tipo int:
Func<int, int, int> sum;
Puoi assegnare qualsiasi metodo alla delega func sopra elencata, che richiede dueintParametri e restituisce unintValore.
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
Il tipo di delegato Func può includere da 0 a 16 tipi di parametri di input diversi. Tuttavia, deve includere un parametro out per il risultato. Ad esempio, il seguente delegato Func non ha parametri di input e contiene solo parametri out.
Func<int> getRandomNumber;
Func deve avere almeno 0 parametri di input, fino a 16 parametri di input, con valore di ritorno generico. Deve avere un valore di ritorno e non può essere void.
Func<int> rappresenta un delegato senza parametri di input, con valore di ritorno int.
Func<object, string, int> rappresenta un delegato con parametri di input object, string e valore di ritorno int.
Func<object, string, int> rappresenta un delegato con parametri di input object, string e valore di ritorno int.
Func<T1, T2,, T3, int> rappresenta un delegato con parametri di input T1, T2,, T3 (generici) e valore di ritorno int.
Puoi assegnare un metodo anonimo alla delega Func utilizzando la parola chiave delegate.
Func<int> getRandomNumber = delegate() { Random rnd = new Random(); return rnd.Next(1, 100); };
Il delegato Func può anche essere utilizzato insieme all'espressione lambda, come mostrato di seguito:
Func<int> getRandomNumber = () => new Random().Next(1, 100); //oppure Func<int, int, int> Sum = (x, y) => x + y;
Func è un tipo di delegato integrato.
Il tipo di delegato Func deve restituire un valore.
Il tipo di delegato Func può avere da zero a 16 parametri di input.
Il tipo di delegato Func non consente parametri ref e out.
Il tipo di delegato Func può essere utilizzato insieme a metodi anonimi o espressioni lambda.