Kal*_*son 15 c# resharper getter setter properties
以下示例中的条件检查是否真的多余?:
public class MyClass {
public bool MyProperty { get; set; }
public void DoSomething(bool newValue) {
// R# says: redundant condition check before assignment
// on the following line:
if (MyProperty != newValue) { // <======
MyProperty = newValue;
}
}
}
Run Code Online (Sandbox Code Playgroud)
我知道任何一种方式MyProperty都会设置newValue,但检查是多余的?
在Adobe Flex中,即使没有进行显式检查,只要调用setter ,VM就会隐式调用getter.最终结果是在分配之前进行检查会导致两个检查,一个显式检查和一个隐式检查,从而导致冗余检查.在C#中有类似的事情吗?
Not*_*tMe 10
只有两种情况我见过这种检查.
第一种是当有一行额外的代码将对象的另一个属性设置为True以指示该对象已被修改.这通常在尝试决定是否将对象的状态持久化为类似数据库时使用.
第二种情况是有问题的类型是不可变的.您可能希望避免设置值,从而创建新字符串,例如,当值相同时.即使在那时,我也只在内存使用至关重要的某些应用中看到它.
| 归档时间: |
|
| 查看次数: |
6685 次 |
| 最近记录: |