委托概述
来源:互联网 发布:网络销售的聊天技巧 编辑:程序博客网 时间:2024/05/22 01:50
A、委托的定义及使用
委托时一种安全地封装方法的类型,是面向对象的、类型安全地和保险的。委托的类型由委托的名称定义。如下定义一个可以封装一个采用字符串作为参数并返回void的方法。
Public delegate void Del(String message);
实例化委托,委托方法给实例化的委托过程如下:
// 创建用于委托的的方法
public static void DelegateMethod(string message)
{
System.Console.WriteLine(message);
}
// 实例化委托
Del handler = DelegateMethod;
// 调用实例化后的委托
handler("Hello World");
委托是一种类型(只不过该类型是由定位委托的名称确定的),故而其可作为参数进行传递。此外,虽然我们声明的委托不是直接派生自Delegate类,但我们可以使用其属性和方法等
int invocationCount = d1.GetInvocationList().GetLength(0);
B、多路委托
可以将多个方法进行委托,这就是多路委托。其方法是运用加减运算符来增加某一委托实例的方法。
public class MethodClass
{
public void Method1(string message) { }
public void Method2(string message) { }
}
MethodClass obj = new MethodClass();
Del d1 = obj.Method1;
Del d2 = obj.Method2;
//Both types of assignment are valid.
Del allMethodsDelegate = d1 + d2;
c、委托类型的比较
再有就是委托类型的比较。在编译时,对分配了两种不同类型的委托进行比较将产生编译错误。如果委托实例静态地属于类型system.Delegate,则允许进行比较,但在运行时将返回false。例如:
delegate void Delegate1();
delegate void Delegate2();
static void method(Delegate1 d, Delegate2 e, System.Delegate f)
{
// Compile-time error.
//Console.WriteLine(d == e);
// OK at compile-time. False if the run-time type of f
//is not the same as that of d.
System.Console.WriteLine(d == f);
}
参见:
http://msdn.microsoft.com/zh-cn/library/ms173172(v=VS.80).aspx
- 委托概述
- 委托概述
- 委托概述
- 委托概述
- C#委托-委托概述
- DotNet 委托概述
- C#委托概述
- 委托和Lambda表达式(一):委托概述
- C#异步委托概述(一)
- C#异步委托实例概述(二)
- C#异步委托实例概述(三)
- C#异步委托实例概述(四)
- 委托事件概述(简单学习)
- 黑马程序员——委托概述
- 委托
- 委托
- 委托
- 委托
- Java类型的生命周期
- javascript输出HTML Table至Excel常用的三种方法
- 爱一个人应该很久的吧
- 图像分析中的傅里叶变换
- 如何在SQL Server中使用触发器
- 委托概述
- linux档案基本管理(1)
- SQL触发器
- https://mail.microsoft.com
- 第一个正式项目
- escape,encodeURI,encodeURIComponent函数比较
- C#与数据结构--二叉树的遍历
- zju2876 vector向量的使用
- javaScript中如何定义类