usar porque metodos los funcionan expresiones eventos delegate delegados delegado como anonimos c# .net generics func out

porque - metodos anonimos c#



Cómo declarar un delegado genérico con un parámetro de salida (3)

En realidad, Func es solo un simple delegado declarado en .NET Framework. En realidad hay varios delegados de funciones declarados allí:

delegate TResult Func<TResult>() delegate TResult Func<T, TResult>(T obj) delegate TResult Func<T1, T2, TResult>(T1 obj1, T2 obj2) delegate TResult Func<T1, T2, T3, TResult>(T1 obj1, T2 obj2, T3 obj3) delegate TResult Func<T1, T2, T3, T4, TResult>(T1 obj1, T2 obj2, T3 obj3, T4 obj4)

Entonces, lo único que puede hacer es declarar su delegado personalizado:

delegate bool MyFunc<T1, T2>(T1 a, out T2 b)

Esta pregunta ya tiene una respuesta aquí:

Func<a, out b, bool> , simplemente no compile, ¿cómo declarar que quiero que el segundo parámetro sea un out ?

Quiero usarlo así:

public class Foo() { public Func<a, out b, bool> DetectMethod; }


Es posible que desee repensar su diseño. ¿Realmente necesitas complicar tu código agregando un parámetro de salida?

Puede ajustar el tipo de retorno bool y el segundo tipo de salida en su propia clase (o tuple .NET 4.0) y usarlo como tipo de retorno:

public Func<Type1, Tuple<Type2, bool>> DetectMethod;

Por supuesto, cuando desea utilizar a los delegados para hacer referencia a los métodos de prueba de análisis, está en el camino correcto y tendrá que definir un nuevo delegado como otros ya descritos.


Necesitas hacer tu propio tipo de delegado, como este:

delegate bool MyFunc(Type1 a, out Type2 b);