【发布时间】:2015-12-14 13:10:50
【问题描述】:
在C#规范中是这样说的:
除了赋值运算符和空合并运算符, 所有二元运算符都是左结合的,这意味着操作是 从左到右执行。
赋值运算符、空合并运算符和 条件运算符 (?:) 是右结合的,这意味着 操作是从右到左进行的。
这已经足够清楚了,但是像default、delegate、stackalloc、await 这样的运算符是如何分类的?它们的关联性是什么?
[]、() 也可以这样说,例如;它们是一元还是二元,或者在技术上都不是,因为根据标准一元运算符类似于 op x 而二元运算符类似于 x op y?
【问题讨论】:
-
您提到的“运算符”都不是二进制的。
-
请提出更具体的问题。您能否提供一个您不确定结果的代码示例?
-
@JonSkeet 它在
Primary Operatorsseciton in C# Operators 页面上是不是很奇怪? -
@SonerGönül:很奇怪。现在在其他地方检查......也许我错了。
-
我看到它也在 C# 5 规范和 ECMA 标准中。唔。是的,我想我错了。删除我的第一条评论:)
标签: c# language-lawyer