ReSharper Возможное исключение InvalidOperationException - PullRequest
7 голосов
/ 10 мая 2011
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;
}

1 Ответ

7 голосов
/ 10 мая 2011

Возможности обнаружения ReSharpers подобных вещей имеют свои границы. ReSharper не признает, что вызов this.IsValid в основном эквивалентен this.Diastolic.HasValue && this.Systolic.HasValue в отношении этой проблемы, то есть ReSharper ищет эти проверки только в том же методе / свойстве.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...