我想创建一个具有type成员的泛型类T。T可以是类,可为空的类,结构或可为空的结构。所以基本上什么都可以。这是一个简化的示例,显示了我的问题:
#nullable enable
class Box<T> {
public T Value { get; }
public Box(T value) {
Value = value;
}
public static Box<T> CreateDefault()
=> new Box<T>(default(T));
}
Run Code Online (Sandbox Code Playgroud)
由于使用了新#nullable enable功能,我得到以下警告:Program.cs(11,23): warning CS8653: A default expression introduces a null value when 'T' is a non-nullable reference type.
这个警告对我来说很有意义。然后,我尝试通过?在属性和构造函数参数中添加来修复此问题:
#nullable enable
class Box<T> {
public T? Value { get; }
public Box(T? value) {
Value = value;
}
public static Box<T> CreateDefault()
=> …Run Code Online (Sandbox Code Playgroud)