c# - 无法将 null 分配给 int?使用三元 (?:) 运算符时
问题描述
谁能帮我理解为什么以下内容无法编译?
string intAsString = "123";
int? nullableInt = null;
nullableInt = !string.IsNullOrEmpty(intAsString)
? Convert.ToInt32(intAsString)
: null;
正如它抱怨的那样:
无法确定条件表达式的类型,因为
int
和之间没有隐式转换null
我预计既然int?
can be assigned null
,这个语句应该可以正常工作。这很容易解决,但我想了解为什么我的期望是错误的。
解决方案
您需要明确地转换Int32
您从中获得的内容Convert.ToInt32
:
string intAsString = "123";
int? nullableInt = null;
nullableInt = !string.IsNullOrEmpty(intAsString) ? (int?)(Convert.ToInt32(intAsString)) : null;
推荐阅读
- elasticsearch - Elasticsearch 动态选择查询
- android - 如何修复 Android Studio 中的重复依赖项?
- go - GKE 无法将卷挂载到部署/Pod:等待条件超时
- javascript - 在 jQuery HTML 中计算 GST
- python - 在 python 中测试并行化方法的虚拟函数
- eclipse - Eclipse 插件片段依赖
- python - Python f'strings
- filter - 在组合框 PowerApps 中使用多个值进行过滤
- cuda - Nsight + Visual Studio 上缺少“开始性能分析”按钮
- azure-logic-apps - SAP Logic 应用程序使用输入参数创建债权人