退出构造函数时,不可为空的属性必须包含非空值。考虑将属性声明为可为空

c#

我有一个像这样的简单类。

public class Greeting
{
    public string From { get; set; }
    public string To { get; set; } 
    public string Message { get; set; }
}

奇怪的是,我收到以下警告。

Severity    Code    Description Project File    Line    Suppression State
Warning CS8618  Non-nullable property 'From' must contain a non-null value when exiting constructor. 
Consider declaring the property as nullable.    MxWork.Elsa2Wf.Tuts.BasicActivities  
D:workMxWorkElsa2.0WfLearningMxWork.Elsa2.0Wf.Tutssrc 
MxWork.Elsa2Wf.Tuts.BasicActivitiesMessagesGreeting.cs   5   Active

我很困惑。它抛出的这些新信息打击了我的信心。我从所有三个属性中得到它们。而这突然出现了。

有人可以建议如何减轻这种情况。

回答

编译器警告您,您的字符串属性的默认分配(空值)与其声明的类型(非空值)不匹配string

当打开可为空的引用类型时会发出此消息,这会将所有引用类型更改为非空,除非使用?.

例如,您的代码可以更改为

public class Greeting
{
    public string? From { get; set; }
    public string? To { get; set; } 
    public string? Message { get; set; }
}

将属性声明为可为空的字符串,或者您可以在线或在构造函数中提供属性默认值:

public class Greeting
{
    public string From { get; set; } = "default from";
    public string To { get; set; } = "default to";
    public string Message { get; set; } = "default message";
}

如果您希望将属性的类型保留为非空。

  • A reasonable default for non-nullable strings is usually `string.Empty`.

以上是退出构造函数时,不可为空的属性必须包含非空值。考虑将属性声明为可为空的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>