首页 > 代码库 > C#委托学习
C#委托学习
..>前言
无力吐槽今天的天气,特别冷,喝杯奶茶继续写点东西吧!
委托
委托是一种引用类型,类似于C语言中的指针类型,不过这个“指针”一定是指向某种类型的函数的。
对象也是引用类型,注意引用类型与值类型的区别。例如:写出以下程序的运行结果。
1 class A 2 { 3 public int x; 4 } 5 class Program 6 { 7 static void Main(string[] args) 8 { 9 A a = new A();10 a.x = 5;11 A b = a;12 b.x = 6;13 Console.WriteLine(a.x);//614 Console.WriteLine(b.x);//6 15 A c = new A();16 c = a;17 c.x = 7;18 Console.WriteLine(a.x);//719 Console.WriteLine(c.x);//720 Console.Read();21 }22 }
定义委托用关键字delegate,格式为:
访问修饰符delegate返回值类型 方法名(形参表);
例如:public delegate int myDelegate(int x,int y) ;
注意定义的委托只是一种类型,要创建这种类型的实例才能完成对委托的操作。而在创建委托的实例时,又必须先定义一个这函数,或实例化一个对象,将这个函数或对象的方法封装到新创建的委托类型的变量中去。
委托的操作有:
=,将另一个函数封装到委托中去。
+,将另一个函数添加到委托中去
-,将另一个函数从委托中删除
例如以下程序:
一:
1 public delegate int myDelegate(int x,int y) ; 2 static int f(int a, int b) 3 { return a + b; } 4 static int ff(int x, int y) 5 { return x > y ? x : y; } 6 static void Main(string[] args) 7 { 8 myDelegate a = new myDelegate(f); 9 Console .WriteLine ( a(3, 5));//810 myDelegate b = new myDelegate(ff);11 Console.WriteLine(b(3, 5));//512 myDelegate c=a+b;//将a与b互换看看结果如何?13 Console .WriteLine (c(3,5));//5,这里要补充一下,c(3,5)是有两个个方法的返回值,由于后面方法的返回值值覆盖前面方法的返回值,所以只打印出后面方法的返回值,同学别在这里搞糊涂的呀。14 c = c - b;//将b改成a看看结果如何?15 Console.WriteLine(c(3, 5));//816 Console.Read();17 }
二:
1 public delegate void myDelegate(int x, int y); 2 static void fun(int a, int b) 3 { Console.WriteLine(a + b); } 4 static void fun1(int x, int y) 5 { Console.WriteLine(x > y ? x : y); } 6 static void Main(string[] args) 7 { 8 myDelegate a = new myDelegate(fun); 9 a(3, 5);//810 myDelegate b = new myDelegate(fun1);11 b(3, 5);//512 myDelegate c = a + b; //将a与b互换看看结果如何?13 c(3, 5);//8,5,这里每一个方法都有输出(看上面的方法??),所以有两个结果呃。14 c = c - b; //将b改成a看看结果如何?15 c(3, 5);//816 Console.Read();17 }
看到这里是不是觉得委托其实也没啥的呢,欢迎大家的意见噢
C#委托学习
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。