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

问题描述 投票:146回答:3
为什么不编译?

int? number = true ? 5 : null;

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

为什么不编译?诠释?数字= true? 5:空;无法确定条件表达式的类型,因为'int'和

c# nullable
3个回答
305
投票
规范(第7.14节)说,对于条件表达式b ? x : y,存在三种可能性,xy都具有类型


65
投票

0
投票
int? num = true ? 5 : default(int?); int? num = true ? 5 : new int?(); int? num = true ? 5 : null as int?; int? num = true ? 5 : (int?)null; int? num = true ? (int?)5 : null; int? num = true ? 5 as int? : null; int? num = true ? new int?(5) : null;

此外,在您看到int?的任何地方,您也可以使用Nullable<int>

© www.soinside.com 2019 - 2024. All rights reserved.