c#string如何评估自己的值?

Rus*_*dge 7 .net c# expression operator-precedence

为什么这段代码

string str = 30 + 20 + 10 + "ddd";
Console.WriteLine(str);
Run Code Online (Sandbox Code Playgroud)

生产60ddd,

还有这个

string str = "ddd" + 30 + 20 + 10;
Console.WriteLine(str);
Run Code Online (Sandbox Code Playgroud)

生产ddd302010

看起来很简单,但我无法理解它.请告诉我可以去的方向,以便找到详细的答案.

谢谢!

Cod*_*ter 11

+您显示的表达式中的运算符具有相同的优先级,因为它们是相同的运算符,因此从左到右进行求值:

30 + 20 + 10 + "ddd"
-- + (int, int) returns (int)50
------- + (int, int) returns (int)60
------------ + (object, string) returns (string)"60ddd"
Run Code Online (Sandbox Code Playgroud)

那么对于另一种情况:

"ddd" + 30 + 20 + 10
----- + (string, object) returns (string)"ddd30"
---------- + (string, object) returns (string)"ddd3020"
--------------- + (string, object) returns (string)"ddd302010"
Run Code Online (Sandbox Code Playgroud)