相关疑难解决方法(0)

为什么这段代码会给出“可能的空引用返回”编译器警告?

考虑以下代码:

using System;

#nullable enable

namespace Demo
{
    public sealed class TestClass
    {
        public string Test()
        {
            bool isNull = _test == null;

            if (isNull)
                return "";
            else
                return _test; // !!!
        }

        readonly string _test = "";
    }
}
Run Code Online (Sandbox Code Playgroud)

当我构建它时,标有的行!!!给出了编译器警告:warning CS8603: Possible null reference return.

我觉得这有点令人困惑,因为它_test是只读的并且初始化为非空。

如果我将代码更改为以下内容,警告就会消失:

        public string Test()
        {
            // bool isNull = _test == null;

            if (_test == null)
                return "";
            else
                return _test;
        }
Run Code Online (Sandbox Code Playgroud)

谁能解释这种行为?

c# nullable-reference-types

81
推荐指数
4
解决办法
8344
查看次数

标签 统计

c# ×1

nullable-reference-types ×1