您当前的位置: 首页 > 

Peter_Gao_

暂无认证

  • 0浏览

    0关注

    621博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

Action<>是委托代理的简写形式

Peter_Gao_ 发布时间:2020-09-09 13:25:49 ,浏览量:0

 

【Action】指那些只有输入参数没有返回值的委托

比如原始的委托是这样定义的:

public delegate void CommonDelegate(string param);  
public static void Hello(string param)  
{  
    Console.WriteLine("Good morning," + param);  
    Console.ReadLine();  
}  
  
CommonDelegate dAction = new CommonDelegate(Hello);  
dAction("EveryOne");
  •  

改写为Action形式的委托就变成了这样:

public static void Hellow(string param)  
{  
    Console.WriteLine("Good morning," + param);  
    Console.ReadLine();  
}  
  
Action action = Hellow;  
action("EveryOne"); 

改为lambda表达式 :

static public  Action action;

action = (param) =>

{

    Console.WriteLine("Good morning," + param);  
    Console.ReadLine();  

}

 

从整个过程来看,省去了定义的麻烦,但是对于初学者也较难理解,一版Action作为回调函数使用

 

using System;
using System.Collections;
 
public class Test
{
    static public Action A;
    static public Action B;
    static public Action C;
    static public Action D;
    static public Action E;
 
    static void Main()
    {
        A = () =>
            {
                Console.WriteLine("I'm A ");
            };
 
        B = (i) =>
            {
                Console.WriteLine("I'm B " + i);
            };
 
        C = (i, s) =>
            {
                Console.WriteLine("I'm C " + i + " " + s) ;
            } ;
 
        D = (i, s, j) =>
            {
                Console.WriteLine("I'm D " + i + " " + s + " " + j) ;
            } ;
 
        E = (i, s, j, t) =>
            {
                Console.WriteLine("I'm E " + i + " " + s + " " + j + " " + t);
            };
 
        A();
        B(1);
        C(1, "a");
        D(1, "a", 2);
        E(1, "a", 2, "b");
               
        Console.ReadKey();
    }
}

 

关注
打赏
1664521772
查看更多评论
立即登录/注册

微信扫码登录

0.0383s