C#中对委托的理解和使用
2018-02-27 17:48
232 查看
.Net中要把方法作为参数传递给其它方法时,需要用委托来实现。即委托是.Net中用来进行方法寻址的。类似C++中的函数指针。C++中函数指针是非类型安全的,仅仅指向的是内存位置。并没有定义具体的参数类型、返回类型。.Net中的委托是类型安全的,委托定义了参数类型和返回类型。委托在.Net中是一种特殊类型的对象,对象中包含了一个或者多个方法的地址。也有人说委托是方法的容器。委托常用在方法回调、事件调用上。委托(Delegate)都派生自System.Delegate类。委托使用包括委托声明和委托实例化。一、委托的声明委托的声明类似于变量的声明:public delegate int MyDelegate(int i, int j);public为范围定义,delegate为委托的关键字,int 为返回参数的类型,MyDelegate为委托的名称,括号中的两个int为传入的参数。在定义委托时必须给出返回参数、传入参数的类型。委托可以定义在类的内部、也可以定义在类的外部,可以通过public、private、protected定义访问范围。委托的声明语法:delegate <return type> <delegate-name> <parameter list>二、委托实例化和使用委托声明后需要通过new关键字进行实例化。实例化时需要把委托指向的方法传递给委托,这里的方法只需要方法名称,不需要方法参数。如:MyDelegate myDelegate = new MyDelegate(AddNum);AddNum为传入的方法名称。完整代码:class Program
{
public delegate int MyDelegate(int i, int j);
static void Main(string[] args)
{
MyDelegate myDelegate = new MyDelegate(AddNum);
int sum=myDelegate(3,5);
Console.WriteLine(sum.ToString());
}
private static int AddNum(int i,int j)
{
return i + j;
}
}
}
三、多路广播委托委托可以包含一个或者多个方法地址,绑定多个方法地址时,可以同时调用多个方法。绑定多个方法:委托实例+=方法名称取消绑定:委托实例-=方法名称广播示例:
{
public delegate int MyDelegate(int i, int j);
static void Main(string[] args)
{
MyDelegate myDelegate = new MyDelegate(AddNum);
int sum=myDelegate(3,5);
Console.WriteLine(sum.ToString());
}
private static int AddNum(int i,int j)
{
return i + j;
}
}
}
三、多路广播委托委托可以包含一个或者多个方法地址,绑定多个方法地址时,可以同时调用多个方法。绑定多个方法:委托实例+=方法名称取消绑定:委托实例-=方法名称广播示例:
class Program { public delegate int MyDelegate(int i, int j); static void Main(string[] args) { MyDelegate myDelegate = new MyDelegate(AddNum); myDelegate += MultiNum; int sum=myDelegate(3,5); Console.WriteLine(sum.ToString()); } private static int AddNum(int i,int j) { return i + j; } private static int MultiNum(int i,int j) { return i * j; } } }
相关文章推荐
- cocos2d-x系列笔记(9.1)---浅谈cocos2d-x使用函数指针实现委托(上)---通过c#代码理解委托
- C#中委托的理解和使用
- 深入理解 c# 第五章 使用多个委托来捕获多个变量实例
- 深入理解 c# 第一章 使用IComparer<Product>委托 对 List <Product> 进行排序
- c#打包文件解压缩 C#中使用委托、接口、匿名方法、泛型委托实现加减乘除算法 一个简单例子理解C#的协变和逆变 对于过长字符串的大小比对
- C#中委托的理解
- 在C#的事件、多播中使用委托
- C#中委托,事件理解(摘)
- 对C#委托及事件委托的理解
- 理解C#中的委托(Deligate)
- 对C#下函数,委托,事件的一点理解
- 关于C#中委托的理解
- 对C#委托、事件、自定义事件的理解
- C#事件与委托(笨蛋理解法)
- C#委托及事件委托的初步理解
- 在C#中使用代理的方式触发事件 (委托和事件 )
- 理解C#中的委托[翻译]
- C#中使用委托
- 理解和使用c#中的反射
- C#中委托,事件理解入门