|
|
1
8
表达式的类型
|
|
|
2
5
好吧,表达
编辑:它很可能是以这种方式实现的,因为这就是C样式语言处理布尔表达式的方式。他们必须对多个术语进行特殊的异常处理,并以不同的方式实现它,而使用赋值运算符则更简单:最右边的表达式计算的值在逻辑上可以应用于链中的下一个表达式。似乎设计师们采取了简单的方法。 |
|
|
3
3
从我的角度来看,这是一个清晰的问题。如果由我来决定,我会考虑如何添加这样一个语言特性,可能会对计算复杂表达式的方式增加太多的歧义。在某些情况下,a==b==c与(a==b)==c不同吗?如果我真的想将C与a==b的布尔结果进行比较,而不是将c与b进行比较呢?在大多数情况下,编译器可能会找到适当的比较,但是如果C隐式地转换为bool,尽管不太可能,那么可能无法判断。 所以就我个人而言,我不确定这是否值得麻烦。虽然它在语法上看起来不太好,但您可以构建自己的实用函数来比较多个对象的相等性,如:
然后你可以这样使用它:
|
|
|
4
2
我找不到引用,但我想是埃里克·利珀特(?)谁说得最好:不实现特性是免费的。也见 http://blog.ryjones.org/2005/07/12/product-development/ 和 http://blog.ryjones.org/2005/07/12/product-development/产品开发/ 它们有许多要实现的特性,我不能想象像这样的非标准的、有问题的价值会是一个高优先级。我不是说它不值钱,但它可能会导致混乱,可能不会经常使用,等等。我认为A1ex07也有一个很好的观点。这必须是一个自定义案例,因为它不能再被一般性地处理了(=总是返回布尔值,等等)。 现在您可以对Linq执行相同的操作,但语法要复杂一些,需要分配某种类型的数组:
你可以倒着做,看看有没有!= 2:
在这两种情况下,一旦其中一个无效,它也会立即退出,因此您通常不会浏览整个列表。 编辑: 还有一点: Does C# have too many language features?
|
|
|
5
1
做你想做的事,
|
|
|
6
1
我认为你的问题在你的参考点上有些恶化。
没有什么神奇的
赋值运算符仅为2个操作数定义,并返回正在设置的值。它们的字符串只是将值从每个运算符传递到下一个运算符:
所以,这同样适用于
所以,技术原因就是
至于语言设计和实现,原因很可能是为了防止歧义和额外的复杂性。尽管你可能想要
或是
|
|
|
7
1
忽略返回值,它还与 operator associativity .
赋值运算符是右关联的。也就是说,首先计算赋值运算符的右侧。这就是你能做到的原因
大多数其他运算符都是左相关的,尤其是短路逻辑运算符(
你可以这么说
|
|
|
8
-1
不是直接回答你的问题,而是如何:
编辑:正如皮特所说,这行不通。这是怎么回事?
声明一次,只要您想用逗号分隔的整数列表进行比较,就可以使用它。(可能有一个更简单的函数,但是无论如何。)
对战
关于你的问题本身,我真的没什么好说的,别人的回答中还没有提到。 |
|
|
A B · C#Excel自动调整列避免长文本时出错 1 年前 |
|
|
Megrez7 · C#ToArray转换合并为一行,导致数组元素更改 1 年前 |
|
Aycon · 在工厂方法中释放部分创建的对象的正确方法是什么? 1 年前 |
|
|
Sei · Avalonia/WPF将路由器传递到控制模板 1 年前 |