Sì, si chiamano delegati in .NET, non in tipi di funzione.
Si utilizza la parola chiave riservata delegate
per definirne di nuovi, e ce ne sono molti che sono predefiniti nelle librerie di classi.
Per definire quello che corrisponde al tuo esempio:
public delegate void DoSomethingDelegate(Object param1, Object param2);
Poi per assegnarlo:
DoSomethingDelegate f = DoSomething;
f(new Object(), new Object());
Ci sono anche due tipi generici di tipi delegati definiti nella libreria di classi di base, uno per i metodi che restituire un valore, e uno per quelli che non lo fanno, e vengono con variazioni sul numero di argomenti che hai.
I due sono Func<..>
per i metodi che restituiscono un valore e Action<..>
per i metodi che non lo sono.
Nel vostro caso, questo dovrebbe funzionare:
Action<Object, Object> f = DoSomething;
f(new Object(), new Object());
Si noti che in quest'ultimo caso, non è necessario dichiarare DoSomethingDelegate
.
fonte
2009-08-21 17:45:21
Func e Action sono molto utilizzati in Linq. – Dykam
Il problema è che non è possibile creare la propria implementazione di Func, in modo che non lo tagli, purtroppo. – Rolf