gpt4 book ai didi

c# - 为什么三元运算符不根据要查找的值找到转换类型?

转载 作者:太空狗 更新时间:2023-10-29 18:29:14 25 4
gpt4 key购买 nike

一个问题here向我提了一个问题:

C# 中的三元运算,比方说 x = y ? a : b,使用ab 的类型来确定三元表达式的类型。为什么不使用x的类型呢?在任何给定情况下,是否没有它可以使用的预期返回类型?

编辑:为了清楚起见,当我说

Why doesn't it use the type of x?

我想我是说

Why doesn't it first try to use the type of x?

如文档所述:

  • 如果 X 和 Y 是同一类型,那么这是条件表达式。
  • 否则,如果隐式转换(第6.1)从X到Y存在,但从Y到X不存在,那么Y就是条件表达式的类型。
  • 否则,如果隐式转换(6.1 节)从 Y 到 X 存在,但从 X 到 Y 不存在,则 X 是条件表达式的类型。
  • 否则,没有表达式类型可以确定,并发生编译时错误。

这个过程可以从:

开始吗?
  • 如果解析类型是明确的,那么它就是条件表达式的类型。

最佳答案

"In any given situation, isn't there an expected return type that it can use?"

没有。考虑例如:

string s = Convert.ToString(y ? a : b);

ToString 方法有多个重载,它们采用不同的数据类型。编译器需要知道表达式的类型才能知道要使用哪个重载。

关于c# - 为什么三元运算符不根据要查找的值找到转换类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18775310/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com