Net 6 nullable 没有对所有类型发出警告[关闭]
Posted
技术标签:
【中文标题】Net 6 nullable 没有对所有类型发出警告[关闭]【英文标题】:Net 6 nullable not giving warning for all types [closed] 【发布时间】:2021-11-22 17:07:46 【问题描述】:使用 Net 6 的 <Nullable>enable</Nullable>
我有课:
public class File
public Int32 Id get; set;
public Byte[] Content get; set;
public DateTime Created get; set;
public Guid Key get; set;
public String Name get; set;
public FileType FileType get; set;
为什么我会收到警告
Non-nullable property '...' must contain a non-null value when exiting constructor. Consider declaring the property as nullable.
在所有属性中,但不在:
Int32 Id
DateTime Created
Guid Key
【问题讨论】:
该警告仅适用于引用类型。该功能称为“可为空的 reference 类型”。这些属性是值类型。Int32
、DateTime
和 Guid
是结构体,不能为空。
Int32
(或更常见的是 int)永远不能为空。它的默认值为 0。如果要将 null
存储到 Id
,则必须将其类型更改为 int?
,这是 Nullable<int>
的简写
【参考方案1】:
可为空的引用类型仅影响引用类型。值类型永远不能为空,因此无需检查或警告它们是否为空。
【讨论】:
以上是关于Net 6 nullable 没有对所有类型发出警告[关闭]的主要内容,如果未能解决你的问题,请参考以下文章
.NET(C#) Nullable(可空类型)通过扩展方法传委托参数调用方法
解决 Net Core 6 中值 1.Count 上的“Nullable value type may be null”
protobuf.net 处理 Nullable<DateTimeOffset>