首页 > 解决方案 > 如何确保泛型参数不是 Nullable?

问题描述

我正在尝试创建一个GameOption包含三个(实际上是四个)值的类:

这是我的班级的样子:

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>东西吗?

标签: c#genericsnullable

解决方案


为确保类型T不可为空,请将其限制为struct

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

通用约束


推荐阅读