如何创建一个Nullable<从类型变量

本文关键字:Nullable 类型变量 一个 何创建 创建 | 更新日期: 2023-09-27 18:05:34

我正在使用表达式,我需要一个接收某种类型(目前未知)的对象的方法。像这样:

public static void Foobar(object Meh) { }

我需要做的是使这个方法返回MehNullable<T>版本,但类型T来自Meh.GetType()。所以返回值是Nullable<MehType>,其中MehTypeMeh的类型。

有什么想法或建议吗?

感谢

Update:我需要这个的原因是因为这个异常:

没有为类型'System. nullable ' 1[System. nullable]定义二进制操作符Equal。

return Expression.Equal(leftExpr, rightExpr);

其中leftExprSystem.Nullable1[[System.Int32, rightExprSystem.Int32

如何创建一个Nullable<从类型变量

如果您在编译时不知道该类型,那么表示它的唯一方法是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 { }

我假设"某些类型"并不意味着"任何类型",因为上面的解决方案只适用于值类型。