繁体   English   中英

如何确保泛型参数不是 Nullable?

[英]How to ensure a generic parameter is not Nullable?

我正在尝试制作一个 class GameOption将包含三个(实际上是四个)值:

  • 选项名称为字符串

  • 一个选项为 T

  • 默认值为 Nullable< T >

这是我的 class 的样子:

public class GameOption<T> {
    private T v;
    private string n;
    private T? def;
    public string Name { get => this.n; }
    public T Value { get => this.v; }
    public GameOption(T o, string name, T? def) {
        this.n = name;
        this.v = o;
    }
    public void ChangeValue(T o) {
        this.v = o;
    }
}

但有一个问题。 正如 VS 所说,T 不能为 Nullable:

类型 T 必须是不可为空的值类型,才能将其用作泛型类型或方法 Nullable 中的参数“T”

如何确保 T 不可为空?

有没有像class X<@NotNull T>类的东西?

为了确保类型T不可为空,请将其约束为struct

public class GameOption<T> where T : struct { }

通用约束

如今:

public class GameOption<T> where T : notnull { }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM