C#的委托与C语言下的函数指针简单比较

C#的委托与C语言下的函数指针比较

C#高级编程》里说“.Net已委托的形式实现了函数指针的概念”,这里简单比较一下两者的区别:

1 首先看看C下的“函数指针”如何声明和定义一个函数变量:

typedef int (*FUNC)(int x, int y);         //声明

FUNC     func;                                          //定义一个“函数变量”

当已经有这样一个实现的函数时:

int SomeFn(int m, int n)

{

    //函数实现

}

就可以将这个SomeFn 函数名赋值给 func变量:

              func = SomeFn;

使用它:

       func100, 200

2 再来看看C#里委托如何实现上面所说,仍然使用上述的SomeFn函数实现:

声明一个委托“类”(在C#中没有全局函数概念,只有类):

              private delegate void FUNC (int x, int y );           // privatepublic没关系

也的确,当你写完了上句后,在VS2005中,发现Func是和其他的“类”是并列的。

       再来声明一个变量,并new一个:

FUNC func = new FUNC (SomeFn)

注意new后面函数名后跟的参数不是SomeFn的两个参数,而是SomeFn本身函数名,不过,这时的SomeFn实现若放在同一个类中,需添加一个static 关键字。

使用它,同上面的C语言一样:

       func100, 200

有了上述基本概念,可以对付一般的编程问题了。C语言中的函数指针做函数参数、C#委托的多播及做数组,请再查其他资料吧。

      

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值