Una breve introducción y uso de Action y Func de C#

  Solía ​​​​escribir delegados definiendo un delegado, pero recientemente vi que el código fuente escrito por algunos extranjeros estaba escrito en forma de acción y función. Tómese el tiempo para aprender estos dos métodos y luego descubra que el código es mucho más simple . También podemos usar estos dos métodos lentamente en el proceso de práctica.

Permítanme hablar primero de la comisión :

Simulemos la escena: el estado de ánimo de aprendizaje de Xiao Ming es alto recientemente, y los libros que compró antes no pueden satisfacer su deseo, por lo que planea comprar un libro (el autocultivo de un programador). Pero en el pasado, siempre iba a la fábrica de libros a comprar, nm, no podía llevarlo demasiado lejos, así que corrí a la librería cercana a comprar, Xiao Ming fue a dar el dinero y me devolvió un libro. se encomienda el proceso. iniciar análisis

1: Xiaoming quiere comprar un libro sobre el autocultivo de un programador (no se comprará el libro xx) requisitos obligatorios (esto es para definir la naturaleza de la confianza)

código:

 delegado privado void BuyBook();

2: Librerías cercanas (método de encomienda)

código:

public static void Book()
{ Console.WriteLine("Proporciono libros"); }

3: Xiaoming establece una relación con la librería (método de vinculación a la encomienda) 

código:

  ComprarLibro comprarlibro = new ComprarLibro(Libro);

4: Xiao Ming da dinero para conseguir libros (desencadenante)

Comprar libro();

El contenido anterior es para comprender el uso del delegado. A continuación, comenzaré a explicar Action y Func.

Uso de acciones

1: Xiao Ming está muy angustiado. Acabo de comprar un libro y me pide que lo defina cada vez. Estoy tan molesto. ¿Hay alguna manera de no definir la encomienda? ¿Hay alguna manera? Realmente lo es. Es la Acción hablamos hoy.

Action BookAction = new Action(Book);
            BookAction();

¿Es esto mucho más simple?

2: Xiao Ming no está satisfecho ahora. He terminado de leer El autocultivo de un programador y ahora quiero comprar otro libro. ¿Qué debo hacer? ¿Quiero redefinir la comisión nuevamente? De hecho, no necesita simplemente pasar los parámetros. Veamos el uso de Action<T>

  static void Main(string[] args)
        {
            Action<string> BookAction = new Action<string>(Book);
            BookAction("百年孤独");
        }
        public static void Book(string BookName)
        {
            Console.WriteLine("我是买书的是:{0}",BookName);
        }

3: Ahora Xiao Ming ha cambiado de opinión nuevamente. No solo tengo que elegir los libros por mí mismo, sino que también quiero comprarlos de un fabricante de libros increíble. ¿Existe tal manera? Déjame decirte, Acción <en T1 ,en T2>

static void Main(string[] args)
        {
            Action<string,string> BookAction = new Action<string,string>(Book);
            BookAction("百年孤独","北京大书店");
        }
        public static void Book(string BookName,string ChangJia)
        {
            Console.WriteLine("我是买书的是:{0}来自{1}",BookName,ChangJia);
        }

 Uso de la función

Xiao Ming tiene una pregunta nuevamente. Cada vez que voy a la librería a recoger libros, ¿hay alguna manera de entregarlos directamente en mi casa? Entonces Func brinda ese servicio especialmente.

Func Explicación Encapsula un método que puede o no tener parámetros (tal vez ninguno) pero devuelve un valor del tipo especificado por el parámetro TResult.

1: Veamos primero un método que no tiene parámetros y solo devuelve un valor

static void Main(string[] args)
        {
            Func<string> RetBook = new Func<string>(FuncBook);
            Console.WriteLine(RetBook);
        }
        public static string FuncBook()
        {
            return "送书来了";
        }

2: Un método con parámetros y un valor de retorno

static void Main(string[] args)
{
Func<string,string> RetBook = new Func<string,string>(FuncBook);
Console.WriteLine(RetBook("aaa"));
}
public static string FuncBook(string BookName)
{
return BookName;
}

3: Un uso muy importante de Func es pasar valores. Permítanme dar un código simple para ilustrar

  Func<string> funcValue = delegate
            {
                return "我是即将传递的值3";
            };
            DisPlayValue(funcValue);

Nota 1: DisplayVauue es para procesar el valor entrante, que es una metáfora para el procesamiento de caché o la adición uniforme de bases de datos, etc.

 private static void DisPlayValue(Func<string> func)
        {
            string RetFunc = func();
            Console.WriteLine("我在测试一下传过来值:{0}",RetFunc);
        }

Resumir

1: la acción se usa para métodos sin valor de retorno (los parámetros se pueden pasar de acuerdo con su propia situación)

2: Func es todo lo contrario para los métodos con valores de retorno (los mismos parámetros se basan en sus propias circunstancias)

3: Recuerde usar action si no hay retorno, y use Func si hay retorno

Reimpresión: https://www.cnblogs.com/LipeiNet/p/4694225.html

Supongo que te gusta

Origin blog.csdn.net/weixin_42565127/article/details/130947237
Recomendado
Clasificación