如何将 null 添加到泛型列表? [复制]
Posted
技术标签:
【中文标题】如何将 null 添加到泛型列表? [复制]【英文标题】:How do I add null to a List of generic type? [duplicate] 【发布时间】:2021-02-15 18:42:58 【问题描述】:我正在尝试这样做:
protected List<T> list = new List<T>();
for (int i = 0; i < size; i++)
list.Add(null);
我收到一个编译器错误提示“无法从 null 转换为 T”。
我环顾四周,但找不到这个问题的答案。
【问题讨论】:
在这种情况下T
是什么?
@David 我花了一段时间试图弄清楚这一点,T 是一个引用类型,一旦我将 where T : class
添加到约束中,我就可以添加 null 成员。可以避免的问题,但也许其他人遇到了这个问题并可以从中受益。
list = Enumerable.Repeat(default(T), size).ToList();
注意,如果T
是struct
(例如int
、bool
等),default(T)
将不是null
【参考方案1】:
好的,很抱歉,在发布此内容几秒钟后,我注意到我没有在类标题中添加约束,当在约束中包含 where T : class
时,我可以将列表成员设为空。
【讨论】:
或者你可以使用default(T)
@Dennis_E 这实际上是一个伟大的
@Dennis_E 我会说你应该这样发布作为答案。
@Dmitry Bychenko(初始问题 cmets)正确地指出,default(T)
在处理 int
、bool
等结构时将不等同于 null
如果目标是专门将 null 添加到列表中,default(T)
本身并不能保证如此,因此它不是这篇文章的好答案。以上是关于如何将 null 添加到泛型列表? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
为啥我不能在编译时将整数添加到泛型集合中,即使使用引用类型作为数字创建的泛型? [复制]