【发布时间】:2021-06-11 10:09:06
【问题描述】:
今天在编程时出现了以下情况。 泛型方法接受不可为空的泛型参数。该方法基本上只是将通用值插入到集合中。但是,这会引发编译器警告,指出泛型参数可能为空。从表面上看,这似乎是编译器中的一个错误,并且与可空值的设计相矛盾。但是,我确信有一些我没有看到的很好的解释。
考虑以下情况的简化示例:
public void M1<T>(T t, List<object> l) => l.Add(t);
编译器警告l.Add(t) 中的 t 可能为空。
也只是为了完整性,以下方法给出了相同的错误(如预期的那样):
public void M1<T>(T? t, List<object> l) => l.Add(t);
有人对此有很好的见解吗?
【问题讨论】:
标签: c# generics nullable nullable-reference-types