c# 高级编程 委托、lambda表达式和事件 教学(1)

来源:互联网 发布:淘宝卖家拉黑买家 编辑:程序博客网 时间:2024/05/20 20:44

什么是委托?

委托是寻址方法的.NET版本。C++中,函数指针只不过是指向内存位置的指针,它不是安全的。

而.NET中,委托是类型安全的类,他定义了返回类型和参数的类型。委托类不仅包含对方法的引用,也可以包含对多个方法的引用。

委托包含的只是一个或多个方法的地址。


Lambda表达式与委托直接相关。当参数是委托类型时,就可以使用Lambda表达式实现委托引用的方法。


什么时候用委托?

当要把方法传递给其他方法时,需要使用委托。


怎么使用委托?

C#使用类时,要先告诉编译器该类由什么字段和方法构成,然后实例化一个类的对象。

委托同样要经过这两个步骤,首先定义要使用的委托,对于委托,定义它就是告诉编译器这种类型的委托表示哪种类型的方法。然后必须创建该委托的一个或多个实例。

委托的返回值就是所代表方法的返回值,委托的参数就是代表方法的参数类型。如下:

delegate void InMethodInvoker(int x);

这表示指定该委托的每个实例都可以包含一个方法,这个方法带有一个int参数,其返回值是void(即不需要返回值)。


理解委托的一个要点就是他们的类型安全性非常高。在定义委托时,必须给出他所表示的方法的签名和返回类型等安全细节。


如何定义委托?

其语法与方法类似,但是没有方法体,定义前面加上delegate关键字。

定义委托基本上是定义一个新类,所以可以在任何可定义类的地方定义委托,可以在类的内部或外部定义,也可以在名称空间中把委托定义为顶层对象。

委托的访问修饰符为:public、private、protected等。


委托如果不带括号,就是委托表示的方法。

委托如果带括号,就表示调用这个委托表示的方法。



0 0
原创粉丝点击