ReSharper 可能无效操作异常

本文关键字:操作 异常 无效 ReSharper | 更新日期: 2023-09-27 17:56:04

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);
    }
}

这是ReSharper抱怨的台词:

result = this.Systolic.Value.ToString("0") + "/" + this.Diastolic.Value.ToString("0");

由于我事先调用了验证逻辑,因此我可以确定收缩压和舒张压都具有我可以使用的值。是ReSharper没有看到这一点,还是在抱怨别的东西?

有趣的是,本节没有问题:

if ((this.Diastolic.Value >= 0) && (this.Systolic.Value >= 0)) {
    valid = true;
}

ReSharper 可能无效操作异常

像这样的东西的ReSharpers检测能力有其边界。ReSharper没有认识到对this.IsValid的调用基本上等同于this.Diastolic.HasValue && this.Systolic.HasValue,即ReSharper仅在相同的方法/属性中查找这些检查。