首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >无法确定条件表达式的类型,因为'int‘和<null>之间没有隐式转换

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

Stack Overflow用户
提问于 2013-08-16 03:45:07
回答 3查看 86.5K关注 0票数 216

为什么这个不能编译?

int? number = true ? 5 : null;

无法确定条件表达式的

类型,因为'int‘和

之间没有隐式转换

EN

回答 3

Stack Overflow用户

发布于 2013-08-16 03:46:00

null没有任何可识别的类型-它只需要一点刺激就能让它快乐起来:

int? number = true ? 5 : (int?)null;
票数 84
EN

Stack Overflow用户

发布于 2020-05-24 21:28:25

C# 9中,blog现在允许这样做

键入的

目标??然后呢?

有时有条件的??和?:表达式在分支之间没有明显的共享类型。这样的情况现在失败了,但是如果有一个两个分支都转换成的目标类型,C# 9.0将允许它们:

Person person = student ?? customer; // Shared base type
int? result = b ? 0 : null; // nullable value type

或者你的例子:

// Allowed in C# 9.
int? number = true ? 5 : null;
票数 8
EN

Stack Overflow用户

发布于 2020-01-15 22:43:23

正如其他人所提到的,5是一个intnull不能隐式转换为int

以下是解决此问题的其他方法:

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>

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18260528

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档