标签:委托
初识委托,是在第一次接触设计模式。大化设计模式362页,有一个对委托的简单介绍。那时候看完之后,脑袋里唯一遗留就只剩下委托二字了。我学了,我忘了。
设计模式里的蔡老师说过:委托是对函数的封装,可以当作给方法的特征指定一个名称。委托是一种引用方法的类型。一旦为委托分配了方式,委托将于该方法具有完全相同的行为。
namespace 委托_赵亚盟
{
class Program
{
static void Main(string[] args)
{
}
/// <summary>
/// 把字符串数组string[]中所有字符串转换成小写
/// </summary>
/// <param name="arg"></param>
static void StringProcess1(string[] array)
{
for (int i = 0; i < array.Length; i++)
{
array[i] = array[i].ToLower();
}
}
/// <summary>
/// 把字符串数组string[]中所有字符串转换成大写
/// </summary>
/// <param name="arg"></param>
static void StringProcess2(string[] array)
{
for (int i = 0; i < array.Length; i++)
{
array[i] = array[i].ToUpper();
}
}
/// <summary>
/// 把字符串数组string[]中所有字符串前后都加上双引号
/// </summary>
/// <param name="arg"></param>
static void StringProcess3(string[] array)
{
for (int i = 0; i < array.Length; i++)
{
array[i] = "\"" + array[i] + "\"";
}
}
}
}
namespace 委托_赵亚盟
{
class Program
{
//声明了一个委托类型 引用类型
delegate void delSayHi(string name);
static void Main(string[] args)
{
///定义委托对象(类似new)
//方法一:
//delSayHi sayhi = new delSayHi(SayHiEnglish);
//方法二:
//delSayHi sayhi = SayHiEnglish;
//调用
//sayhi("赵亚盟");
//方法一:Test(new delSayHi(SayHiEnglish), "赵亚盟");
///方法二:简写(因为编译器帮我们new了,所以我们可以直接将方法名传过去)
Test(SayHiEnglish, "赵亚盟");
Console.Read();
}
/// <summary>
/// 测试方法
/// </summary>
/// <param name="del"></param>
/// <param name="name"></param>
static void Test(delSayHi del, string name)
{
del(name);
}
/// <summary>
/// 说英文Hello的方法
/// </summary>
/// <param name="name"></param>
static void SayHiEnglish(string name)
{
Console.WriteLine("Hello" + name);
}
/// <summary>
/// 说中文你好的方法
/// </summary>
/// <param name="name"></param>
static void SayHiChinese(string name)
{
Console.WriteLine("你好" + name);
}
}
namespace 使用委托的好处_例子_赵亚盟
{
class Program
{
//声明了一个委托类型 引用类型
delegate string DelStringProcess(string s);
static void Main(string[] args)
{
string[] array = { "aaa", "bbb", "ccc" };
StringProcess(array, ToUpper);
for (int i = 0; i < array.Length; i++)
{
Console.WriteLine(array[i]);
}
Console.Read();
}
/// <summary>
/// 转换成大写
/// </summary>
/// <param name="s"></param>
/// <returns></returns>
static string ToUpper(string s)
{
return s.ToUpper();
}
/// <summary>
/// 处理字符串数组
/// </summary>
/// <param name="array">要处理的数组</param>
/// <param name="del">处理的方式(通过委托 传递一个方法,此方法处理字符串)</param>
static void StringProcess(string[] array,DelStringProcess del)
{
for (int i = 0; i < array.Length; i++)
{
array[i] = del(array[i]); //通过委托去调用方法
}
}
}
}
标签:委托
原文地址:http://blog.csdn.net/u010785685/article/details/44277721