【问题标题】:How do I add null to a List of generic type? [duplicate]如何将 null 添加到泛型列表? [复制]
【发布时间】: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(); 注意,如果Tstruct(例如intbool 等),default(T) 将不是null

标签: c# list generics


【解决方案1】:

好的,很抱歉,在发布此内容几秒钟后,我注意到我没有在类标题中添加约束,当在约束中包含 where T : class 时,我可以将列表成员设为空。

【讨论】:

  • 或者你可以使用default(T)
  • @Dennis_E 这实际上是一个伟大的
  • @Dennis_E 我会说你应该这样发布作为答案。
  • @Dmitry Bychenko(初始问题 cmets)正确地指出,default(T) 在处理 intbool 等结构时将不等同于 null
  • 如果目标是专门将 null 添加到列表中,default(T) 本身并不能保证如此,因此它不是这篇文章的好答案。
猜你喜欢
  • 2016-07-03
  • 1970-01-01
  • 1970-01-01
  • 2010-10-19
  • 1970-01-01
  • 2023-04-11
  • 2018-03-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多