如何创建一个Nullable<从类型变量
本文关键字:Nullable 类型变量 一个 何创建 创建 | 更新日期: 2023-09-27 18:05:34
我正在使用表达式,我需要一个接收某种类型(目前未知)的对象的方法。像这样:
public static void Foobar(object Meh) { }
我需要做的是使这个方法返回Meh
的Nullable<T>
版本,但类型T
来自Meh.GetType()
。所以返回值是Nullable<MehType>
,其中MehType
是Meh
的类型。
有什么想法或建议吗?
感谢Update:我需要这个的原因是因为这个异常:
没有为类型'System. nullable ' 1[System. nullable]定义二进制操作符Equal。
return Expression.Equal(leftExpr, rightExpr);
其中leftExpr
为System.Nullable1[[System.Int32
, rightExpr
为System.Int32
如果您在编译时不知道该类型,那么表示它的唯一方法是object
-一旦您将一个可空值类型框起来,您最终将得到一个空引用,或者一个被框起来的非可空值类型。
int? nullable = 3;
object result = nullable;
int nonNullable = 3;
object result = nonNullable;
换句话说,我认为你不能真正表达你想要做的事情。
您是否必须使用Meh.GetType()
而不是通用?这个呢?
public static Nullable<T> Foobar<T>(T Meh) where T : struct { }
我假设"某些类型"并不意味着"任何类型",因为上面的解决方案只适用于值类型。