【发布时间】:2017-04-05 07:38:15
【问题描述】:
为什么这个sn-p的代码
string str = 30 + 20 + 10 + "ddd";
Console.WriteLine(str);
产生60ddd,
还有这个
string str = "ddd" + 30 + 20 + 10;
Console.WriteLine(str);
产生ddd302010?
看起来很简单,但我无法理解它。 请告诉我方向,以便找到详细的答案。
谢谢!
【问题讨论】:
-
@Damien_The_Unbeliever 实际上,在这种情况下,
operator +(int, int)和operator((string)int, string)的歧义是造成混淆的原因。 -
但是,归根结底,依靠评估顺序是如何毁掉某人的一天,并从奇怪的错误中造成无法估量的损害的一个典型例子。
-
@Aron - 不,事实上,由于没有括号,在第一个表达式中,要执行的第一个操作显然是两个
ints 之间的+和第二个表达式,在string和int之间是+。由于关联性。
标签: c# .net expression operator-precedence