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

为什么赋值语句返回值?

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

为什么赋值语句返回值?

据我了解,赋值s =“ Hello”; 应该只将“ Hello”分配给s,但是该操作不应返回任何值。

您的理解是100%错误的。 你能解释为什么你相信这假话吗?

允许赋值语句返回值的背后原因是什么?

首先,赋值 语句 不产生值。赋值 表达式
产生一个值。作业表达是法律声明;只有少数表达式是C#中的合法语句:等待表达式,实例构造,增量,减量,调用和赋值表达式可用于需要语句的地方。

C#中只有一种不产生某种值的表达式,即,调用键入为return
void的内容。(或者等效地,等待一个没有关联结果值的任务。)每种其他类型的表达式都会产生值或变量,引用或属性访问或事件访问,等等。

请注意,所有合法的表达式 对于其副作用 都是 有用的
。这是这里的关键见解,我想也许是您直觉的原因,即分配应该是语句而不是表达式。理想情况下,每个语句只具有一个副作用,而表达式中没有副作用。它
一个有点奇怪副作用的代码可以在所有的表达式上下文中使用。

允许使用此功能的原因是因为(1)它经常很方便,并且(2)在类似C的语言中是惯用语言。

可能有人注意到这个问题已经被乞求了:为什么在C语言中这种习惯用法呢?

不幸的是,丹尼斯·里奇(Dennis Ritchie)不再可以询问,但是我的猜测是,赋值几乎总是留下 刚刚 在寄存器中 赋值的值
。C是一种非常“接近机器”的语言。似乎很合理,并且与C的设计保持一致,语言特性基本上意味着“继续使用我刚刚分配的值”。为此功能编写代码生成器非常容易。您只需继续使用存储已分配值的寄存器。



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

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

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