c#委托把方法当成参数(实例讲解)
静态方法代理:
public delegate void DoGreeting(string name);
class Program
{
[STAThread]
static void Main(string[] args)
{
//方法名当成参数传给委托类型调用
MarkGreeting("张三", GreetingEnglish);
MarkGreeting("李四", GreetingChinese);
}
/// <summary>
/// 委托(代理的方法)
/// </summary>
/// <param name="name"></param>
/// <param name="markGreeting"></param>
private static void MarkGreeting(string name, DoGreeting markGreeting)
{
markGreeting(name);
}
/// <summary>
/// 用英文打招呼
/// </summary>
/// <param name="name"></param>
private static void GreetingEnglish(string name)
{
Console.WriteLine(name+"hello!");
}
/// <summary>
/// 用中文打招呼
/// </summary>
/// <param name="name"></param>
private static void GreetingChinese(string name)
{
Console.WriteLine(name+"你好!");
}
}
实例方法代理:
public delegate void DoGreeting(string name);
public class Greeting
{
/// <summary>
/// 委托(代理的方法)
/// </summary>
/// <param name="name"></param>
/// <param name="markGreeting"></param>
public void MarkGreeting(string name, DoGreeting markGreeting)
{
markGreeting(name);
}
/// <summary>
/// 用英文打招呼
/// </summary>
/// <param name="name"></param>
public void GreetingEnglish(string name)
{
Console.WriteLine(name + "hello!");
}
/// <summary>
/// 用中文打招呼
/// </summary>
/// <param name="name"></param>
public void GreetingChinese(string name)
{
Console.WriteLine(name + "你好!");
}
}
class Program
{
[STAThread]
static void Main(string[] args)
{
Greeting greetingObj = new Greeting();
greetingObj.MarkGreeting("张三", greetingObj.GreetingEnglish);
greetingObj.MarkGreeting("李四", greetingObj.GreetingChinese);
}
上一篇:详谈C# 图片与byte[]之间以及byte[]与string之间的转换
栏 目:.NET代码
本文标题:c#委托把方法当成参数(实例讲解)
本文地址:http://www.codeinn.net/misctech/167923.html






