首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

我好像遇到了假的 C

Hello,大家好,又见面了。不知道什么时候才能添加评论~嗯,所以,有事儿可以知乎(https://www.zhihu.com/people/liu-xia-80/activities) 上找,但是我也不能保证及时回复~x_x。

我改了以下模板,代码风格换成了 light。因为不严谨的研究显示,长期看暗风格的代码在保护眼睛的同时心情可能会变得郁闷。而且对于手机用户并不是很友好。

我们还是先来看看上一期的问题吧。

上一期的问题解答

我们还是要把问题贴一下。这样大家就不用来回翻了(我真是个好人)。上一期的问题是有一个介绍加入非法组织的代理:

加入组织的代码如下:

其中(1)和(2)是两种不同的实现,每次只能选择其一。那么(1)和(2)的输出分别是什么呢?

这道题目里面埋了几个坑,我们一起分析一下。对于(1),也就是:

我们先得分清楚,谁是谁。首先 指的是参数(argument),而不是 字段(field)。而同理 也是参数。由于 是用 ByRef 的参数传递,因此 真正的改变了传入的 引用。因此第(1)种情况下,你顺利的加入了“晓”这个组织。

然后我们再来看看(2)

首先 是字段(field),并且就是一个普通的引用。那么问题就在于 这个操作对于委托(delegate)来说到底是一个修改,还是创建一个新的对象了。来 Reference:

https://docs.microsoft.com/en-us/dotnet/api/system.delegate?view=netframework-4.7.2

Delegates are immutable; once created, the invocation list of a delegate does not change.(Delegate 是一个不可变的对象。一旦创建,其调用列表就不会再改变了。)

因此, 操作不是一个更新操作。那么显然(2)什么都不会输出。这个坑很有意思,很多老手一不小心也能栽进去。看来组织也不是随便进的。

本期的题目

假设我们要放飞自我,就要做只鸟。但是是一个有些复杂的鸟。首先我们有接口:

然后我们供奉了祖宗

最后,到了我们自己这一代,飞这件事情搞得有点复杂:

你猜,以下程序的输出是什么呢?(温馨提示:正确的食用姿势是先用我们的神经网络运行一下这个程序,然后再上机器验证。不过基本上你现在应该在地铁上/餐馆里…身边没有电脑,我也是多虑了)

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180604G09E6800?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券