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