C# 如何处理;列表<;T>;。添加(默认值)";正确地
考虑以下代码在C# 如何处理;列表<;T>;。添加(默认值)";正确地,c#,nullable,.net-4.8,C#,Nullable,.net 4.8,考虑以下代码在#nullable上下文中编译并使用.Net Framework 4.8: public sealed class Test<T> { public Test() { _data.Add(default); // warning CS8604: Possible null reference argument for parameter 'item' in 'void List<T>.Add(T item)'. }
#nullable
上下文中编译并使用.Net Framework 4.8:
public sealed class Test<T>
{
public Test()
{
_data.Add(default); // warning CS8604: Possible null reference argument for parameter 'item' in 'void List<T>.Add(T item)'.
}
public T Item => _data[0];
readonly List<T> _data = new List<T>();
}
我无法添加“struct”或“class”类型约束,因为此代码实际上位于一个PriorityQueue
类中,该类已在许多具有值和引用类型的地方使用
因此,我现在所做的只是像这样抑制消息:
public Test()
{
_data.Add(default!); // Note the "!"
}
这是处理此问题的正确方法吗(鉴于此方法必须与.Net Framework 4.8配合使用,因此新的空相关代码注释不可用)?a好的,您可以在项目中内部定义并使用它们。关于new()
约束,您的场景中可以使用吗?
public Test()
{
_data.Add(default!); // Note the "!"
}