При использовании ссылочных типов Nullable в C # 8, почему переменная в операторе if выдает предупреждение «возможный ноль» - PullRequest
2 голосов
/ 25 октября 2019

Я только начал работать со ссылочными типами Nullable в C # 8 и .Net core 3.0, и получил предупреждение, но я не понимаю, почему я его получил.

Надеюсь, один из вас сможетпомогите мне понять это.

Вот две тестовые функции, которые дают разные результаты:

    private void Test(ISpectrum? modelSpectrum) {
        var readyToCapture = modelSpectrum is Spectrum;

        if (readyToCapture)
            Model.ReferenceRawSpectrum = new Spectrum(modelSpectrum.XData);
    }

    private void Test2(ISpectrum? modelSpectrum) {
        if(modelSpectrum is Spectrum)
            Model.ReferenceRawSpectrum = new Spectrum(modelSpectrum.XData);
    }

Test1: выдает предупреждение «возможное нулевое» на modelSpectrum.XData, и это удивляет меняпоскольку readyToCapture проверил modelSpectrum на нулевое значение.

Test2: не дает никаких предупреждений, как ожидалось.

Можете ли вы объяснить, почему в Test1 есть предупреждение?

...