泛型类中可为空的通用字段

Ves*_*ian 2 c# generics nullable class

我正在尝试做这样的事情:

public class MySuperCoolClass<T>
{
    public T? myMaybeNullField {get; set;}
}
Run Code Online (Sandbox Code Playgroud)

这可能吗?

这给了我错误:

错误CS0453:T' must be a non-nullable value type in order to use it as type parameter泛型类型或方法System.Nullable'中的类型T'.

谢谢

Sri*_*vel 12

添加where T : struct通用约束以消除错误,因为Nullable<T>只接受struct.

public class MySuperCoolClass<T> where T : struct
{
    public T? myMaybeNullField { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

Nullable<T> 定义如下

public struct Nullable<T> where T : struct
Run Code Online (Sandbox Code Playgroud)

所以你也被迫这样做,只是为了防止你做MySuperCoolClass<object>那些object?无效的做法.