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 类型”。这些属性是值类型。 Int32DateTimeGuid 是结构体,不能为空。 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”

.NET 6新特性试用 | 可空引用类型

protobuf.net 处理 Nullable<DateTimeOffset>

Nullable-如何在 C# 中的 DateTime 类型中仅比较没有时间的日期?

术语:您如何描述 Nullable<T> 的类型 T?