【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();
}
}