C#的委托 VS C++的指针

本文探讨了C#中的委托与C++中的指针的概念及其使用方式。通过具体示例,详细阐述了两者在功能上的相似之处及本质上的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    在学习C#时,对于其中的委托一直没能好好的理解。现在学习C++,又遇到了同样是难点的指针。都说两者有一定的相似之处,现在,我们就来谈谈他们的区别和联系吧!

(一)委托。

      一直以来对于委托的理解都如在梦中。委托,与类一样也是一种类型。

      首先看一下委托的例子:

        delegate int CalculateDelegate(int x, int y);
        static int Add(int x, int y)
        {
            return x + y;
        }
        static void Main(string[] args)
        {
            CalculateDelegate cd = Add;
            Console.WriteLine(cd (10, 20));
        }
委托是怎么使用的呢?Main函数是要调用Add函数的,我们可以看到实际是通过cd这个委托来调用了。简而言之,就是Add的活儿让cd给代劳了。

再来理解一下委托的定义:委托就是一种引用方法的类型。委托与分配的方法具有相同的行为,委托可以看作是函数的抽象,委托的实例是一个具体的函数。

(二)指针。

     我个人感觉指针比委托要更容易理解。什么是指针呢?指针就是一个特殊的变量,里面的存放的内容是地址而已。就像米老师说的“指针就是写着去哪里拿小礼物的小纸条”。

看一个例子:

char c='a';
char *p=&c;//&是<span style="font-family:KaiTi_GB2312;">取</span>地址符号,p存放的是c的地址
    指针的含义很同意理解。函数指针,就是指向函数的指针。编译时,每一个函数都有一个入口,那么指向这个函数的指针指向的就是这个地址。

   我们下面来区分一下指向函数的指针和委托的区别和联系!
(三)委托VS函数指针

委托和函数指针的本质上的区别还是很好理解的。在应用上的区别我们看一下。

委托和函数指针都描述了函数或者是方法,并且通过统一的接口调用不同的实现。但是,两者之间的区别还是大大的。

(1)委托是函数的抽象,委托对象是真正的对象。函数指针只是指向函数入口的地址,不具有对象性质。

(2)委托对象可以指向不同类的方法,只要符合委托要求。而C++函数不能指向不同类的方法。

(3)在应用时,C++的指针没有C#的委托灵活。


理解的还很浅,不当之处,还请大家指教!

评论 17
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值