public class BloodPressure {
public Int16? Diastolic { get; set; }
private Boolean IsValid {
get {
var valid = false;
if (this.Diastolic.HasValue && this.Systolic.HasValue) {
if ((this.Diastolic.Value >= 0) && (this.Systolic.Value >= 0)) {
valid = true;
}
}
return (valid);
}
}
public Int16? Systolic { get; set; }
public override String ToString() {
var result = "";
if (this.IsValid) {
result = this.Systolic.Value.ToString("0") + "/" + this.Diastolic.Value.ToString("0");
}
else {
result = null;
}
return (result);
}
}
Run Code Online (Sandbox Code Playgroud)
这是ReSharper抱怨的那条线:
result = this.Systolic.Value.ToString("0") + "/" + this.Diastolic.Value.ToString("0");
Run Code Online (Sandbox Code Playgroud)
由于我事先调用了我的验证逻辑,我可以确定收缩压和舒张压都有我可以使用的值.ReSharper没有看到这个,还是在抱怨其他什么?
有趣的是,这部分没有问题:
if ((this.Diastolic.Value >= 0) && (this.Systolic.Value >= 0)) {
valid = true;
}
Run Code Online (Sandbox Code Playgroud)
像这样的东西的ReSharpers检测能力有它的界限.ReSharper不承认对该问题的调用this.IsValid基本上等同于this.Diastolic.HasValue && this.Systolic.HasValue,即ReSharper仅在相同的方法/属性中查找这些检查.