首页 > 代码库 > C#的delegate与C的函数指针
C#的delegate与C的函数指针
引子:
一个小示例,希望可以帮助广大侠士们来理解delegate。
在C中的函数指针示例:
1 #include <stdio.h> 2 3 // 减法运算 4 int minus(int a, int b) { 5 return a - b; 6 } 7 8 // 加法运算 9 int sum(int a, int b) {10 return a + b;11 }12 13 // 这个counting函数是用来做a和b之间的计算,至于做加法还是减法运算,由函数的第1个参数决定14 void counting( int (*p)(int, int) , int a, int b) {15 int result = p(a, b);16 printf("计算结果为:%d\n", result);17 }18 19 int main()20 {21 // 进行加法运算22 counting(sum, 6, 4);23 24 // 进行减法运算25 counting(minus, 6, 4);26 27 return 0;28 }
本代码引自:http://www.cnblogs.com/mjios/archive/2013/03/19/2967037.html。
此页有详细的关于指向函数的指针的教程,如果对C不是很了解的侠士,可前往一探究竟。
自己写的C#代码:
1 class UpStatic 2 { 3 public delegate int calculate(int a, int b); 4 public int add(int a, int b) 5 { 6 return a + b; 7 } 8 public int minus(int a, int b) 9 {10 return a - b;11 }12 public int multiply(int a, int b)13 {14 return a * b;15 }16 public int count(int a, int b, calculate c)17 {18 int result = c(a, b);19 return result;20 }21 }22 23 class Program24 {25 26 static void Main(string[] args)27 {28 var test = new UpStatic();29 int p = test.count(44, 44, test.add);30 int q = test.count(44, 44, test.minus);31 int r = test.count(44, 44, test.multiply);32 Console.WriteLine(p);33 Console.WriteLine(q);34 Console.WriteLine(r);35 Console.Read();36 }37 }
悟:
空中楼阁总是令人心神不定,高以下为基。
要打好基础,才能站得稳健。
C#的delegate与C的函数指针
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。