Sí, se llaman delegados en .NET, no tipos de funciones.
Utiliza la palabra clave reservada delegate
para definir nuevas, y hay muchas que están predefinidas en las bibliotecas de clases.
para definir uno que coincida con su ejemplo:
public delegate void DoSomethingDelegate(Object param1, Object param2);
así asignarle:
DoSomethingDelegate f = DoSomething;
f(new Object(), new Object());
También hay dos tipos genéricos de tipos de delegados definidos en la biblioteca de clases de base, uno de los métodos que se devuelve un valor, y uno para los que no, y vienen con variaciones sobre la cantidad de argumentos que tiene.
Los dos son Func<..>
para los métodos que devuelven un valor, y Action<..>
para los métodos que no lo hacen.
En su caso, esto funcionaría:
Action<Object, Object> f = DoSomething;
f(new Object(), new Object());
Tenga en cuenta que en este último caso, usted no tiene que declarar DoSomethingDelegate
.
Func y Action son muy utilizados en Linq. – Dykam
El problema es que uno no puede crear su propia implementación de Func, por lo que no acaba de cortar, por desgracia. – Rolf