如何将`null`转换为可为null的int?我总是得到0

时间:2018-11-08 22:27:13

标签: c# asp.net .net

出于我不厌烦您的原因,我有一个通用对象,其值为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?

我需要barnull。我该怎么做?

1 个答案:

答案 0 :(得分:3)

以下将起作用

int? bar = (int?)foo;

但是,如注释中所指出的,如果Specified cast is not valid除了foonull之外的其他任何东西,都会抛出int异常。

如果您只想获得null(如果转换无效),则可以使用

int? bar = foo as int?;

这将隐藏转换问题。