首页 > 解决方案 > 无法将 null 分配给 int?使用三元 (?:) 运算符时

问题描述

谁能帮我理解为什么以下内容无法编译?

string intAsString = "123";
int? nullableInt = null;

nullableInt = !string.IsNullOrEmpty(intAsString) 
    ? Convert.ToInt32(intAsString) 
    : null;

正如它抱怨的那样:

无法确定条件表达式的类型,因为int和之间没有隐式转换null

我预计既然int?can be assigned null,这个语句应该可以正常工作。这很容易解决,但我想了解为什么我的期望是错误的。

标签: c#nullableconditional-operator

解决方案


您需要明确地转换Int32您从中获得的内容Convert.ToInt32

string intAsString = "123";
int? nullableInt = null;

nullableInt = !string.IsNullOrEmpty(intAsString) ? (int?)(Convert.ToInt32(intAsString)) : null;

推荐阅读