委托
1. 什么是委托
委托是一种引用方法的类型,一旦为委托分配了方法,委托将与该方法具有完全相同的行为。委托方法的使用可以像其他任何方法一样,具有参数和返回值,其实委托类似与C++中的函数指针,但委托是类型安全和可靠的,委托是事件的基础
2. 委托概诉
l 委托类似于 C++ 函数指针,但它是类型安全的
l 委托允许将方法作为参数进行传递
l 委托可以用于定义回调方法
l 委托可以链接在一起;(如:对一个事件调用多个方法)
l 方法不需要与委托签名精确匹配。
l C#2.0中引入了匿名方法的概念,该方法允许将代码作为参数传递,以代替单独定义的方法(下面我们会讲到的)
3. 何时使用委托而不使用接口
以下情况中使用委托:
l 在设计事件的时
l 封装静态方法时
l 当调用方不需要访问实现该方法的对象中的其他属性、方法或接口时
l 当类可能需要该方法的多个实现时
在以下情况中使用接口:
l 当存在一组可能被调用的相关方法时
l 当类只需要方法的单个实现时
l 当使用接口的类想要将该接口强制转换为其他接口或类类型时
l 当正在实现的方法链接到类的类型或标识时:例如比较方法
4. 委托的关联方式
1) 与命名方法关联
委托可以与命名方法关联。使用命名的方法对委托进行实例化时,该方法将作为参数传递这就是使用命名的方法,一般用于对静态方法货实例方法进行封装(2.0之前的版本中使用命名的方法是对委托进行实例化的唯一方式)
2) 与匿名方法关联
匿名方法将代码块传递为委托参数,使用匿名方法就不必创建单独的方法,因此减少实例化委托所需要的编码系统开销
注意:
u 匿名方法的参数的范围是 匿名方法块
u 在目标在块外部的匿名方法块内使用跳转语句(如 goto、break 或 continue)是错误的。
u 目标在块内部的匿名方法块外部使用跳转语句(如 goto、break 或 continue)也是错误的
u 如果局部变量和参数的范围包含匿名方法声明,则该局部变量和参数称为该匿名方法的外部变量或捕获变量
5. Dome
using System;
using System.Collections.Generic;
using System.Text;
namespace DelegaterDome
{
delegate void Add(int x,int y);// //定义一个委托方法
class Program
{
static void Main(string[] args)
{
#region匿名方法
System.Threading.Thread t1 = new System.Threading.Thread(delegate()
{
System.Console.WriteLine("aaa");
//System.Threading.Thread.Sleep(2000);
System.Console.WriteLine("bbb");
});
t1.Start();
int t2 = 10;
int t3 = 20;
Add add = delegate(int x, int y)
{
Console.WriteLine("总和为:{0}",x+y);
};
add(t2, t3);
#endregion
#region命名方法
add = new Add(Program.Sum);
add(t2, t3);
#endregion
Console.ReadLine();
}
static void Sum(int x, int y)
{
Console.WriteLine("总和为:{0}", x + y);
}
}
}
6.
分享到:
相关推荐
报关委托书-范本报关委托书-范本报关委托书-范本报关委托书-范本报关委托书-范本
西北妇女儿童医院-办理《出生医学证明》授权委托书-PDF版.pdf
个人委托书范本_委托书-个人委托书范本_单位委托书范本.docx
项目经理授权委托书-范本.docx
资产运营授权委托书-委托书.pdf
制造商授权委托书-委托书.pdf
委托书追讨债务委托书-5页.pdf
授权委托书-公司对个人授权委托.pdf
委托书有关消防检测委托书-3页.pdf
委托 和 事件在 .Net Framework中的应用非常广泛,然而,较好地理解委托和事件对很多接触C#时间不长的人来说并不容易。它们就像是一道槛儿,过了这个槛的人,觉得真是太容易了,而没有过去的人每次见到委托和事件就...
授权委托书-查房产.pdf
海关委托书-1页.pdf
贷款委托书-12页.pdf
试验委托单-见证记录.doc
银行贷款委托书-9页.pdf
身份证代领委托书-2页.pdf
事业单位资格审核委托书-.doc
公司刻章委托书-示例模板.pdf
购房贷款委托书-2页.pdf