C#-委托delegate
一.C#-委托delegate
C#中委托即C++中函数指针,通过delegate关键字可声明一个代理.代理可像指针一样作为参数传递和调用.
<1.声明一个代理类型
class Test{
public delegate string CreateNativeString();
}
<2.创建代理变量
class Main{
public Test.CreateNativeString pointer;
}
<3.创建目标方法
class Main{
public string MyCreateString()
{
return "MyCreateString"
}
}
<4.目标方法赋值代理变量
class Main{
pointer = MyCreateString();
}
<5.代理变量传参&调用
class Main{
public void Invoke(Test.CreateNativeString pointer)
{
pointer();
}
}
二.Func&Action
<1.Func(具有返回值的委托)
定义了输入和返回的delegate,例如Func<int, string>表示输入为int,输出为string
public class Test
{
Func<string, int> fun = CreateString;
public int CreateString(int param)
{
}
}
<2.Action(不具有返回值的委托)
定义了输入的delegate,例如Action<int, string>表示输入为int,string
public class Test
{
Action<string, int> fun = CreateString;
public int CreateString(string str, int param)
{
}
}