为什么我收到警告必须初始化不可为空的字段(当我确定正在初始化它时)?

dig*_*tig 7 c# visual-studio

我有:

public abstract class Craft
{
    public Craft()
    {
        CurrentQuadrant = new Point(0, 0);
    }

    private Point _currentQuadrant;
    public Point CurrentQuadrant
    {
        get => _currentQuadrant;
        set
        {
            _currentQuadrant = value;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

(点是一个简单的 xy 对)。

为什么会给我这样的警告Non-nullable field '_currentQuadrant' must contain a non-null value when exiting the constructor?赋值是否不能确保它不为空?

K. *_* L. 9

声誉太低,无法发表评论,所以我将其发布在这里。

如果您使用的是 .NET 5+,则可以使用该[MemberNotNull]属性(更多信息请参见此处)。

只要穿上[MemberNotNull(nameof(_currentQuadrant)]你的构造函数,警告就会消失。

或者您可以将值分配给_currentQuadrant而不是CurrentQuadrant.