1.委托 C#的委托相当于C/C++中的函数指针。函数指针用指针获取一个函数的入口地址,实现对函数的操作。 委托与C/C++中的函数指针不同在于,委托是面向对象的,是引用类型,对委托的使用要先定义后实例化,最后才能调用。 ...
1.委托
C#的委托相当于C/C++中的函数指针。函数指针用指针获取一个函数的入口地址,实现对函数的操作。
委托与C/C++中的函数指针不同在于,委托是get='_blank'>面向对象的,是引用类型,对委托的使用要先定义后实例化,最后才能调用。并且委托是类型安全的,它定义了返回类型和参数的类型,而在C/C++中,函数指针只是一个指向内存位置的指针,它不是类型安全的,我们无法判断这个指针实际指向什么,所以参数和返回类型等项就无法知道了。
定义委托
使用关键字delegate。语法类似于方法的定义,但没有方法体,定义的前面加上关键字delegate。
例如:定义一个委托:delegate void IntMethod(int x);
在这个示例中,定义了一个委托IntMethod,并指定该委托的每个实例都可以包含一个方法的引用,该方法带有一个int参数,返回类型为void。
如果要定义一个委托TwoLongOp,该委托表示的方法有两个long类型的参数,返回类型为double,则可以这样定义:delegate double TwoLongOp(long first,long second);
delegate string GetString();//该委托表示的方法没有参数,返回string类型。
定义委托基本上是定义一个新类,可以在定义类的任何相同地方定义委托。也就是说可以在一个类的内部定义,也可以在外部定义,还可以在命名空间中把委托定义为顶层对象。
可以在委托的定义上应用访问修饰符:public,protected,private等,用来限定委托的作用域。例如:public delegate void IntMethod(int x);
实例化,调用
1 private delegate string GetString(int x);//定义委托 2 static void Main(string[] args) 3 { 4 GetString strMed = new GetString(StringMethod);//对委托进行实例化,并进行初始化 5 Console.WriteLine(strMed(555));//调用委托 6 Console.ReadKey(); 7 } 8 private static string StringMethod(int x) 9 {10 return x.ToString();11 }
原标题:C#基础加强篇
关键词:C#
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们:
admin#shaoqun.com
(#换成@)。