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 "!"
}