【问题标题】:How to ensure a generic parameter is not Nullable?如何确保泛型参数不可为空?
【发布时间】:2019-03-12 04:39:59
【问题描述】:

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

  • 字符串形式的选项名称

  • 作为 T 的选项

  • 默认值为 Nullable

我的班级是这样的:

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 不是 Nullable?

class X&lt;@NotNull T&gt; 之类的东西吗?

【问题讨论】:

    标签: c# generics nullable


    【解决方案1】:

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

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

    Generic Constraints

    【讨论】:

      猜你喜欢
      • 2012-09-09
      • 1970-01-01
      • 2019-11-04
      • 2019-12-11
      • 1970-01-01
      • 2022-09-23
      • 1970-01-01
      • 1970-01-01
      • 2021-02-17
      相关资源
      最近更新 更多