该类型必须是非可空值类型才能在泛型类型或方法'System.Nullable <t>中将其用作参数'T'

时间:2018-03-03 12:24:39

标签: c#

我创建了一个泛型类:

public class Pair<L, R>
{
    public L? left;
    public R? right;
    // some code
}

我想在泛型类型中使用null-able变量。编译器给出错误:

  

该类型必须是非可空值类型才能将其用作   泛型类型或方法'System.Nullable'

中的参数'T'

在这种情况下,为了克服这个错误,正确的构造应该是什么?谢谢。

1 个答案:

答案 0 :(得分:4)

您可以将它们限制为值类型:

 public class Pair<L, R>  
     where L: struct
     where R: struct

但这不允许引用类型(类),不清楚这是否是你想要的。
当L和R是参考类型时,您不需要?

编写一个允许两者的通用配对要困难得多。我不确定它是否可以直接完成。也许在C#8中。

否则你需要在成员周围使用一些包装。