出于我不厌烦您的原因,我有一个通用对象,其值为null
,需要将其转换为可为null的int。
object foo = null
int? bar = Convert.ToInt32(foo) // bar = 0
int? bar = (int?)Convert.ToInt32(foo) // bar = 0
int? bar = Convert.ToInt32?(foo) // not a thing
来自this thread:
int? bar = Expression.Constant(foo, typeof(int?)); // Can not convert System.Linq.Expression.Constant to int?
我需要bar
是null
。我该怎么做?
答案 0 :(得分:3)
以下将起作用
int? bar = (int?)foo;
但是,如注释中所指出的,如果Specified cast is not valid
除了foo
或null
之外的其他任何东西,都会抛出int
异常。
如果您只想获得null
(如果转换无效),则可以使用
int? bar = foo as int?;
这将隐藏转换问题。