这里的一个问题向我提出了一个问题:
c# 中的三元运算,比如x = y ? a : b
,使用其中一个的类型a
或b
来确定三元表达式的类型。为什么不使用的类型x
?在任何给定的情况下,是否没有可以使用的预期返回类型?
编辑:为了清楚起见,当我说
为什么不使用的类型
x
?
我想我的意思是
为什么不先尝试使用的类型
x
?
正如文档所述:
- 如果 X 和 Y 是相同的类型,那么这是条件表达式的类型。
- 否则,如果存在从 X 到 Y 的隐式转换(第 6.1 节),但不存在从 Y 到 X 的转换,则 Y 是条件表达式的类型。
- 否则,如果存在从 Y 到 X 的隐式转换(第 6.1 节),但不存在从 X 到 Y 的隐式转换,则 X 是条件表达式的类型。
- 否则,无法确定表达式类型,并出现编译时错误。
这个过程可以从以下开始:
- 如果解析类型是明确的,那么它就是条件表达式的类型。