泛型委托
1、Action(无返回值)
Action的定义如下:
public delegate void Action<in T>(T obj);
public delegate void Action<in T1, in T2>(T1 arg1, T2 arg2);
public delegate void Action<in T1, in T2, in T3>(T1 arg1, T2 arg2, T3 arg3);
说明:
- 输入的参数最多为16个
- 只有输入参数,没有返回参数
2、Func(有返回值)
Func的定义如下:
public delegate TResult Func<in T, out TResult>(T arg);
public delegate TResult Func<in T1, in T2, out TResult>(T1 arg1, T2 arg2);
public delegate TResult Func<in T1, in T2, in T3, out TResult>(T1 arg1, T2 arg2, T3 arg3);
说明:
- 尖括号内的参数类型,最后一个为返回类型,其他的都是输入类型。即:out TResult。
- 输入的参数个数最高没细数,一般情况下肯定够用。
3、用法如下:
public class TestClass
{
public event Action<string> DoSomethingUsingString;
public event Func<string,int> DoSomethingToGetLength;
public TestClass()
{
string str = "HelloWorld!";
if(DoSomethingUsingString != null)
{
DoSomethingUsingString(str);
}
if (DoSomethingToGetLength != null)
{
int iLength = DoSomethingToGetLength(str);
Console.WriteLine(iLength);
}
}
}
CLR读书笔记(2016/6/26 11:26:18)