一.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){}
}