using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace 委托深度理解
{
/// <summary>
/// 比如孩子想买个东西,但是她很懒,所以就想让爸爸妈妈帮她买,
/// 这就是委托。委托是类型安全的,和指针类似但是直接操作内存是很危险
/// 的。
/// </summary>
/// <param name="something"></param>
public delegate void BuySomething(string something);
class Program
{
// public event SaySomething come;
static void Main(string[] args)
{
BuySomething Father = new BuySomething(FatherBuy);//将委托和方法关联起来
BuySomething Mother = new BuySomething(MotherBuy);//将委托和方法关联起来
Father("冰激凌");
Mother.Invoke("喜羊羊书包");
Func<string, string> convertMethod = UppercaseString;//另一种实现委托的方法
//http://msdn.microsoft.com/zh-cn/library/bb549151.aspx#Y0
Console.WriteLine("另一种实现委托的方法:"+convertMethod("abcdefg"));
// Func<T, TResult> 委托与匿名方法一起使用。
Func<string, string> convertToLower = delegate(string s) { return s.ToLower(); };//后面有 ; 注意
Console.WriteLine("匿名方法实现委托,将ABCDEFG转换为小写:" + convertToLower("ABCDEFG"));
//通过使用匿名方法,由于您不必创建单独的方法,因此减少了实例化委托所需的编码系统开销。
Func<string, string> convert = s => s.ToLower();
Console.WriteLine("Lambda 表达式实现委托,将ABCDEFG转换为小写:" + convertToLower("ABCDEFG"));
// 这样能以参数形式传递 lambda 表达式,而不用显式将其分配给委托。
Console.ReadLine();
}
public static void MotherBuy(string st)
{
Console.WriteLine("委托妈妈买" + st); //买东西就是一个方法
}
public static void FatherBuy(string st)
{
Console.WriteLine("委托爸爸买" + st);
}
public static string UppercaseString(string st)
{
return st.ToUpper();
}
}
}
c# 委托理解
最新推荐文章于 2024-10-10 15:52:17 发布