【发布时间】:2019-02-20 09:30:46
【问题描述】:
我有一个在我的 EntityFramework 模型中使用的实体。
public class Entity
{
public int Id { get; set; }
public string Value { get; set; }
}
启用可空引用类型后编译器给我一个警告:
Warning CS8618 Non-nullable property 'Value' is uninitialized.
我知道这个属性在数据库中是不可为空的并且它是安全的。
除了用#pragma warning disable禁用类中的警告之外,还有什么方法可以将此属性标记为安全?
我的第一反应是尝试像这样使用! 将类型标记为安全
public string! Value { get; set; }
但这没有用。
【问题讨论】:
-
注意警告。没有人说这家酒店是安全的。警告告诉您变量 not 已初始化,因此为 null。即使数据库中的 字段 不可为空,查询也可能返回
NULL。右侧表中没有匹配记录的 LEFT JOIN 的结果将包含所有缺失值的 NULL -
@PanagiotisKanavos 你说得对,这比我想象的要复杂
-
您是否可以通过提供默认值来缓解这种情况(我想这取决于空字符串在您的情况下是否是合法值)?
public string Value { get; set; } = string.Empty;
标签: c# c#-8.0 nullable-reference-types