c# - 为什么没有关于身份分配的警告?

标签 c# compiler-warnings

我已经多次犯过这个错误 - 当我快速工作并使用代码完成时会发生这种情况。我最终得到如下代码:

public class Model : IModel
{
    public PropertyNames PropertyNames { get; set; }
    public Model(PropertyNames propertyNames)
    {
        PropertyNames = PropertyNames;
    }
}

然后测试以一种不太明显的方式失败了,我很沮丧。

我只是很好奇是否有正当理由编写这样的代码,如果没有,那么它是否会让一个好的候选人产生警告?

最佳答案

I'm just curious if there's a valid reason to write code like that, ever

不幸的是,这取决于您的看法。因为我们谈论的标识符是一个属性,所以将一个属性分配给一个属性听起来像一个空操作,但它实际上调用了方法,getter 和 setter,这些方法可能有副作用。

一个非常常见的特定情况是,如果 setter 执行类似属性通知或调用观察者的操作,但当您调用 getter 或 setter 时,任何事情都可能发生。这就是代码不生成警告的原因:因为这种编码风格实际上很有用并用于生产代码。

编辑:

相比之下,如果标识符是一个字段而不是一个属性,它会生成此警告:

warning CS1717: Assignment made to same variable; did you mean to assign something else?

关于c# - 为什么没有关于身份分配的警告?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6005394/

相关文章:

jenkins - 如何使 cpplint 与 Jenkins 警告插件一起使用

c++ - 理解-Weffc++

c# - 将焦点设置到文本框

c# - GDax API GET 请求总是返回错误 400

c# - 在 XAML 中添加数学公式的好方法?

c# - Javascript 与 C# 中的局部变量性能

c# - 我怎样才能始终向上舍入 float ?

javascript - Webpack:抑制来自特定文件的警告

ios - 新 Xcode 7.1 中有 100 多个警告?

python - 如何从代码中删除 RunTimeWarning 错误?