首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Form = Form = Form,语句做什么?

Form = Form = Form,语句做什么?
EN

Stack Overflow用户
提问于 2013-04-11 00:28:00
回答 4查看 271关注 0票数 0

我以前从来没有遇到过这样的说法,有谁能告诉我它的作用吗?

代码语言:javascript
复制
Form = CardForm = MainForm;

这是一个桌面应用程序(我是桌面应用程序的新手)

谢谢

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-04-11 00:29:55

假设FormCardFormMainForm是变量...

它有2个赋值运算符,赋值运算符是唯一的,因为它们是从右到左计算的。

首先,它将CardForm设置为MainForm,然后将Form设置为CardForm = MainForm的结果

票数 1
EN

Stack Overflow用户

发布于 2013-04-11 02:42:54

到目前为止,所有的答案都包含细微的错误。让我在这里直截了当地说。

形式的链式赋值表达式的语义

代码语言:javascript
复制
x = y = z

包括:

  • 首先计算表达式x,y和z,并按照该顺序产生其副作用。
  • 第二,将计算z所产生的值转换为与表达式y相关联的类型。将此值称为z1。请注意,这可能不是z的值;转换可能是involved.
  • Third,。将z1赋给y的副作用是z1被转换为与表达式x相关的类型。将此值称为z2。同样,z2不必与z1或z相同。
  • Fifth,z2被分配给x。

总而言之,这具有以下语义:

代码语言:javascript
复制
side effects of x
side effects of y
side effects of z
z1 = value of z converted to type of y
y = z1 
z2 = value of z1 converted to type of x
x = z2

其他一些答案试图告诉你,x = y = z;的语义只是y = z; x = y;的语义,这是完全错误的。在该程序中,y和z副作用发生在x的副作用之前,且在该程序中,y是从其中读取的。在x = y = z;中,这两种情况都不成立。

票数 17
EN

Stack Overflow用户

发布于 2013-04-11 00:30:18

在C#以及许多其他语言中,为变量赋值的操作返回一个值本身。这称为表达式的逻辑值(或l值)。

假设您想要设置五个变量:

代码语言:javascript
复制
int a, b, c, d, e;

数字5。你可以这样做:

代码语言:javascript
复制
a = b = c = d = e = 5;

表达式e = 5的值为5,该值将被设置为dd = 5的值为5,该值将设置为cc = 5的值为5,该值将设置为bb = 5的值为5,该值将设置为a。然后,a将被设置为5

因为我们不知道CardCardFormMainForm的类型,所以我们不能确切地告诉你代码将做什么,因为类型可以定义隐式转换,并且被覆盖的赋值操作符可以返回任何感觉上的值(当然是那种类型)。

表达式:

代码语言:javascript
复制
CardForm = MainForm

有一个逻辑值,即最终分配给CardForm的值。最有可能的是,CardForm将被设置为MainForm的值,并且该表达式本身将返回CardForm的新值,该值随后将被设置为Form

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

https://stackoverflow.com/questions/15931390

复制
相关文章

相似问题

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