退出构造函数时,不可为空的属性必须包含非空值。考虑将属性声明为可为空
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`.