开发者

How to create a Nullable<T> from a Type variable?

开发者 https://www.devze.com 2023-03-28 19:56 出处:网络
I\'m working with expressions and I need a method which receives an object of some type (currently unknown). Something like this:

I'm working with expressions and I need a method which receives an object of some type (currently unknown). Something like this:

开发者_JAVA百科public static void Foobar(object Meh) { }

What I need to is make this method return a Nullable<T> version of Meh, but the type T is from Meh.GetType(). So the return would be Nullable<MehType>, where MehType is the type of Meh.

Any ideas or suggestions?

Thanks

Update: the reason why I needed this is because of this exception:

The binary operator Equal is not defined for the types 'System.Nullable`1[System.Int32]' and 'System.Int32'.

return Expression.Equal(leftExpr, rightExpr);

where leftExpr is a System.Nullable1[[System.Int32 and rightExpr is a System.Int32.


If you don't know the type at compile time, the only way of expressing it is as object - and as soon as you box a nullable value type, you end up with either a null reference, or a boxed non-nullable value type.

So these snippets are exactly equivalent in terms of the results:

int? nullable = 3;
object result = nullable;

int nonNullable = 3;
object result = nonNullable;

In other words, I don't think you can really express what you're trying to do.


Do you have to use Meh.GetType() instead of a generic? What about this?

public static Nullable<T> Foobar<T>(T Meh) where T : struct { }

I'm making the assumption that "some type" does not mean "any type", because the solution above would only work with value types.

0

精彩评论

暂无评论...
验证码 换一张
取 消