形式=形式=形式,语句是做什么的
本文关键字:形式 什么 语句 | 更新日期: 2023-09-27 18:08:24
我从来没有遇到过这种类型的语句,谁能告诉我它的作用吗?
Form = CardForm = MainForm;
这是一个桌面应用程序(我对桌面应用程序很陌生)
谢谢
到目前为止,所有的答案都包含细微的错误。让我把话说清楚。
形式为 的链式赋值表达式的语义x = y = z
:
计算第一个表达式x、y和z,并按顺序产生它们的副作用(如果有的话)。
第二,将计算z产生的值转换为与表达式y相关联的类型,称该值为z1。注意,这可能不是z的值;
第三,执行将z1赋值给y的副作用。
第四,将z1转换为与表达式x相关联的类型。将该值称为z2。同样,z2不需要与z1或z相同。
第五,z2赋值给x
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;
的语义,而CC_2是完全错误的。在该程序中,y和z的副作用发生在 x的副作用之前,并且在该程序中,从读取y。
在c#以及许多其他语言中,为变量赋值的行为本身返回一个值。这称为表达式的逻辑值(或l-value)。
假设您想设置五个变量:
int a, b, c, d, e;
到数字5。你可以这样做:
a = b = c = d = e = 5;
表达式e = 5
的值为5
,将其设置为d
。d = 5
的值为5
,将其设置为c
。c = 5
的值为5
,将其设置为b
。b = 5
的值为5
,将其设置为a
。然后将a
设置为5
。
由于我们不知道Card
、CardForm
和MainForm
的类型,因此我们无法确切地告诉您代码将做什么,因为类型可以定义隐式转换,并且重写赋值操作符可以返回任何感觉的值(当然是该类型)。
表达式:
CardForm = MainForm
具有逻辑值,该值为最终分配给CardForm
的值。最有可能的是,CardForm
将被设置为MainForm
的值,并且该表达式本身将返回CardForm
的新值,然后将其设置为Form
。
假设Form
、CardForm
、MainForm
为变量…
有两个赋值操作符,赋值操作符的唯一之处在于它们从右向左求值
首先将CardForm
设置为x = y = z;
0,然后将Form
设置为CardForm = MainForm
的结果
给定Form
, CardForm
和MainForm
实际上是变量,尽管由于命名约定不太可能建议它们使用camelCase:
=
运算符可以传递地使用,因此该语句相当于(非常粗略,详细信息请参阅https://stackoverflow.com/a/15931435/17713和注释!):
CardForm = MainForm;
Form = MainForm;
注意=
是右操作符(赋值顺序)。
=
不能在c#中重载。因此,它必须是一个分配,并且这一行没有特定于桌面应用程序的方面。
参见:http://msdn.microsoft.com/en-us/library/sbkb459w.aspx