uso una referencia puede propiedad por pase pasar parĂ¡metro parametros parametro indizador funciones como asignar argumentos c# wpf mvvm func

c# - una - Void Func sin argumentos



uso del parametro out sin asignar c# (3)

Lo que estás buscando es una Acción. No requiere parámetros, y no devuelve ningún valor.

Hay algunas preguntas similares pero no exactamente como la mía.

¿Hay un Func equivalente para una función sin un valor de retorno (es decir, vacío) y sin parámetros?

La pregunta relacionada es que Func no devuelve nada. pero esto no responde por un tipo de vacío.

(Lo necesito para solicitar acciones de mi modelo de vista a mi vista).


Sí, hay diferentes sobrecargas de Action toman una cantidad diferente de parámetros de entrada y tienen un tipo de retorno void .

Action public delegate void Action() Action<T> public delegate void Action<T>(T obj) Action<T1,T2> public delegate void Action<T1,T2>(T1 arg1, T2 arg2) Action<T1,T2,T3> public delegate void Action<T1,T2,T3>(T1 arg1, T2 arg2, T3 arg3) ...

La primera línea es lo que estás buscando.

Las versiones más recientes de Framework han agregado sobrecargas con aún más argumentos. Número máximo de argumentos:

  • .NET Framework 2.0: 1
  • .NET Framework 3.5: 4
  • .NET Framework 4.0: 16
  • Silverlight: 16

Las acciones siempre tienen un tipo de devolución de void . Un tipo de devolución void no necesita y no se puede especificar como parámetro de tipo genérico. Por el contrario, los delegados Func definen tipos de retorno "reales" y siempre tienen al menos un parámetro de tipo genérico para el tipo de retorno:

Func<TResult> public delegate TResult Func<TResult>() Func<T,TResult> public delegate TResult Func<T,TResult>(T arg) Func<T1,T2,TResult> public delegate TResult Func<T1,T2,TResult>(T1 arg1, T2 arg2) ...

.NET Framework 4.0 ha agregado modificadores de out y out a los parámetros de tipo genérico para contravarianza y covarianza. Ver: covarianza y contravarianza en genéricos . Ejemplos:

public delegate void Action<in T1, in T2>(T1 arg1, T2 arg2) public delegate TResult Func<in T1, in T2, out TResult>(T1 arg1, T2 arg2)


Tu redacción es confusa Quizás quieras decir "una función sin un tipo de devolución y sin parámetros". Simplemente hay System.Action .

Action action = () => Console.WriteLine("hello world"); action();

De tu comentario:

Pero necesito completar un tipo <T> en una Acción y el vacío no es una posibilidad (editaré mi pregunta, cometí un error).

Esto indica un malentendido. La T en el delegado de Acción es una entrada . El vacío es la salida. Un delegado de Acción es inherentemente un delegado que devuelve el vacío. La T es el tipo de entrada sobre la que puede actuar, los parámetros que usted luego proporcionaría con argumentos.

En cualquier caso, como muestran esta respuesta y otras, puede tener un delegado de Acción sin ninguna T, un delegado que no toma entradas.