namespace Delegate
{
//定义委托,它定义了可以代表的方法的类型
public delegate void GreetingDelegate(string name);
class Program
{
private static void EnglishGreeting(string name)
{
Console.WriteLine("Morning, " + name);
}
private static void ChineseGreeting(string name)
{
Console.WriteLine("早上好, " + name);
}
//注意此方法,它接受一个GreetingDelegate类型的方法作为参数
private static void GreetPeople(string name, GreetingDelegate MakeGreeting)
{
MakeGreeting(name);
}
static void Main(string[] args)
{
GreetPeople("Jack Ma", EnglishGreeting);
GreetPeople("马云", ChineseGreeting);
Console.ReadKey();
}
}
}
输出如下: Morning, Jack Ma
早上好, 马云
//总结,Delegate可以把方法(例如具有相同参数x的方法A,B,C...)作为方法(需要调用A(x),B(x),C(x))的参数。
namespace Delegate {
//定义委托,它定义了可以代表的方法的类型
public delegate void GreetingDelegate(string name);
//新建的GreetingManager类
public class GreetingManager{
public void GreetPeople(string name, GreetingDelegate MakeGreeting) {
MakeGreeting(name);
}
}
class Program {
private static void EnglishGreeting(string name) {
Console.WriteLine("Morning, " + name);
}
private static void ChineseGreeting(string name) {
Console.WriteLine("早上好, " + name);
}
static void Main(string[] args) {
// ... ...
}
}
}
static void Main(string[] args) {
GreetingManager gm = new GreetingManager();
gm.GreetPeople("Jack Ma", EnglishGreeting);
gm.GreetPeople("马云", ChineseGreeting);
}