C#==>委托
2010-01-05 07:25
197 查看
1,.NET的委托实际上是实现了函数指针的概念。比如C或者C++对于windows API中的回调函数的使用实际上就是方法调用的指针。
VB 中的AddressOf关键字也实现了该功能。
2,当我们把方法传递给其他方法时,需要使用委托。
需要用到方法作为参数传递的几个实例:
①,启动线程。Thread类的构造函数
②,事件。事件发生时,把处理时间的方法传送为委托的一个参数。
3,.NET中不允许直接引用函数的指针,必须把方法的细节封装在一种新类型的对象中,即委托。
委托实际上是一种特殊的对象类型,委托不包含数据,有的仅仅是方法的地址。
4,委托的声明。委托的声明中包含了方法的全部细节,①返回类型,②带有的参数
例:delegate void MyMethod(int i);
※:地应委托实际上是定义了一个新类,所以可以在定义类的任何地方地址委托,
而不必非要定义在一个类的内部。
5,委托的使用
6,实例
7,委托的实例可以表示任何类型的任何对象上的实例方法或静态方法。
VB 中的AddressOf关键字也实现了该功能。
2,当我们把方法传递给其他方法时,需要使用委托。
需要用到方法作为参数传递的几个实例:
①,启动线程。Thread类的构造函数
②,事件。事件发生时,把处理时间的方法传送为委托的一个参数。
3,.NET中不允许直接引用函数的指针,必须把方法的细节封装在一种新类型的对象中,即委托。
委托实际上是一种特殊的对象类型,委托不包含数据,有的仅仅是方法的地址。
4,委托的声明。委托的声明中包含了方法的全部细节,①返回类型,②带有的参数
例:delegate void MyMethod(int i);
※:地应委托实际上是定义了一个新类,所以可以在定义类的任何地方地址委托,
而不必非要定义在一个类的内部。
5,委托的使用
6,实例
namespace 委托 { delegate void MyMethod(int i); class Program { static void showInt(int i) { Console.WriteLine(i.ToString()); } static void Main(string[] args) { MyMethod my = new MyMethod(showInt); //C#2.0之后可以使用如下方式定义委托 MyMethod my2 = showInt; my(100); //实际上编译器会编译为 my.Invoke(100); my2(1000); //结果为100,1000 Console.Read(); } } }
7,委托的实例可以表示任何类型的任何对象上的实例方法或静态方法。
相关文章推荐
- 提问c# action<> func<> 这2个委托怎么用和理解
- C#的委托 Action<>和Func<>
- C#中的Action<T>、Func<T>委托和Lambda表达式
- 浅析C#中的Func<>委托
- C#==>多播委托
- C# Func<>委托
- C# 新委托使用方法 Lambda表达式,运算符 =>
- C#_delegate - Pair<T> & 简单顺序逆序 & 方法委托(在Pair类下)&枚举类型 混搭使用
- C#中的委托与事件详解<个人总结>
- c#中Action<T>和Func<T>委托
- C# Action<T> 委托
- C#中的Action<>和Func<>以及传统的委托
- C#==>事件和委托的实例
- C# Action<T> 委托
- <NET CLR via c# 第4版>笔记 第17章 委托
- C# List<T> 泛型的反射, 泛型 函数的反射
- <Pro WPF 4.5 in C#> - Note-02
- <C#>关于string.Empty & "" & null 的讨论
- C# 委托应用总结
- c#中如何去除List<String>中的重复项