考虑以下代码:
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)
谁能解释这种行为?