我需要制作一个可以容纳以下类型的值的类:int?, decimal?, date, bool? string
。
我希望能够做这样的事情:
var x = new MyClass<int?>()
x.Value = null;
x.value = 99;
// or
var y = new MyClass<bool?>();
y.Value = null;
y.Value = true
// and so on
我一直试图按照以下方式创建类型T的类:
public class TestClass<T>
{
public T? Value{ get; set; }
}
我想使用Value接受任何允许的类型,但是我不能使T为可为空。错误是:
Sysytem.Nullable只能是不可为空的值类型
无论如何,我正在努力实现什么目标?
试试这个:
public class TestClass<T> where T : struct
{
public T? Value{ get; set; }
}
类不能为空,因为类是引用类型。您必须向通用类添加约束以仅允许结构(可以为空)。
string
是引用类型,在string
这种情况下您的课程无法使用它,因为它不能为空。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句