【发布时间】:2023-01-08 08:21:33
【问题描述】:
以下所有内容都有效吗?它们是实例化为 _s 的类的属性。
public List<int>? _Int1 { get; set; }
public List<int?> _Int2 { get; set; }
public List<Nullable<int>> _Int3 { get; set; }
我已经尝试了所有这些并且一切正常。但是,当我分配值时,它必须与定义的方式完全匹配,即:
_s._Int1 = new List<int> { 0 } ;
_s._Int2 = new List<int?> { 0 };
_s._Int3 = new List<Nullable<int>> { 0 };
如果我要分配不同的内容,那么我会得到以下信息:
_s._Int1 = new List<int?> { 0 } ; // fail
_s._Int2 = new List<Nullable<int>> { 0 }; // OK
_s._Int3 = new List<int?> { 0 }; // OK
我的问题是声明 Nullable 的正确方法是什么。谢谢。
【问题讨论】:
-
_int2 和 _Int3 相同,描述的是一个列表,其项可以为空或整数。 _Int1 是一个变量,可以为 null 或引用整数列表。
-
#2 和#3 是相同的...?只是 Nullable<T> 的简写。 #1 告诉您集合本身可以为空。
-
#1 似乎是语法错误,那里不需要
?,它不是可为空的 int -
public List<int> _Int1 = null;=> 你可以给列表赋空值 -
对于
_Int1,列表可以为空,但该列表中的任何项目都不能为空,对于_Int2,列表不能为空,但列表中的项目可以为空。