加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – a = b = c编码标准

发布时间:2020-12-15 20:02:58 所属栏目:百科 来源:网络整理
导读:我负责在组织内创建编码标准和进行代码审查. 我在源代码中遇到了这样的东西: object.Property = myVar1 = myVar2; 我个人并不是这样做的,因为我发现它令人困惑.我看到这个,我想这样读: object.Property = myVar1 == myVar2; 现在我知道它在做什么:它将myV
我负责在组织内创建编码标准和进行代码审查.

我在源代码中遇到了这样的东西:

object.Property = myVar1 = myVar2;

我个人并不是这样做的,因为我发现它令人困惑.我看到这个,我想这样读:

object.Property = myVar1 == myVar2;

现在我知道它在做什么:它将myVar分配给myVar2,然后将object.Property分配给myVar2.编码标准文档没有明确说明您是否可以这样做.但它确实声明不在if语句中分配变量.

我想我的问题是,作为一种编码实践而不是这样做的风格是不是很糟糕?我不喜欢制定代码标准政策“仅仅因为我这么说”

编辑以更好地解释我的理解

解决方法

这种所谓的“链式任务”确实存在争议,并且有很多关于SO的问题可以解决它.

正如你所知,它是作为表达而不是陈述的赋值的副产品,对许多人来说,它可能令人困惑.

它对很多语言来说对新手来说有些危险.在[]是空数组对象的构造函数的语言中,写入

a = b = []

使a和b引用相同的对象.新手倾向于认为它创建了两个独立的空数组,可以独立填充.不是这样! C#等价物,

a = b = new SomethingOrOther();

可以说发生的可能性要大得多,因为a和b更有可能在声明时初始化,而且这种双重赋值会更少,而且C#程序员更有可能在这种情况下看到明显的共享.

制定禁止此行为的一个很好的理由是三方面的:

>完全没必要.
>它容易出错(如上面的数组示例中所示).

当您遇到容易出错的构造时,您应该避免使用它们,因为在避免它们时,您将永远不会发生该特定错误.当然,在C#中,它可能比其他语言更不容易出错.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读