C#。。还是关于委托。。。

来源:百度知道 编辑:UC知道 时间:2024/05/28 19:18:46
委托是完全面向对象,且使用安全的类型,这里安全的类型指的是什么?

举个例子,委托的声明为:
public delegate void EventHandler(Object sender, EventArgs e);

这个时候声明一个委托变量:
EventHandler eh = new EventHandler(MyFunction);

这里的MyFunction的签名必须是:
void MyFunction(Object, EventArgs);

如果MyFunction多一个参数、少一个参数、参数类型不对、返回类型不为void的话都不能编译通过。这个就叫做类型安全,也叫强类型。相对于C、C++的函数指针,只要是32为的指针类型都能被传递进来,错误只能在运行的时候才能看出来来。类型安全是.NET的一大特色。

这里的安全的类型,实际是针对以前的C和C++ 中的指针概念讲的。

C# 里面的委托, 其实就是取代了 C和C++中的指针的概念。

C# 中,如果使用指针,则是非安全类型 unsafe 的, 但是委托则是托管类型,是安全的。