栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

条件运算符不能隐式转换吗?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

条件运算符不能隐式转换吗?

这是一个相当常见的问题。

在C#中,我们几乎总是从内到外进行推理。当你看到

x = y;

我们计算出x的类型是什么,y的类型是什么,以及y的类型是否与x兼容。但是,当我们计算y的类型时,我们不会使用知道x的类型的事实。

那是因为可能有多个x:

void M(int x) { }void M(string x) { }...M(y); // y is assigned to either int x or string x depending on the type of y

我们 需要 能够计算出表达式的类型, 而无需 知道将其分配给什么。型信息流 出来 的表达,而不是 的表达式。

为了计算条件表达式的类型,我们计算结果的类型和替代表达式,从两种类型中选择更通用的类型,这便成为条件表达式的类型。因此,在您的示例中,条件表达式的类型为“
int”,并且它不是常量(除非条件表达式为true或false常量)。由于它不是一个常量,因此无法将其分配给字节。当结果不是常量时,编译器将仅根据类型而不是根据值进行解释。

所有这些规则的例外是lambda表达式,其中类型信息 确实 从上下文流入lambda。正确地处理逻辑非常困难。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/568621.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号