C#-变量分配

时间:2018-08-27 13:16:38

标签: c#

我有一段代码给出了相同的输出,但是想知道为什么C#编译器不会对示例2中提到的赋值抛出错误。

示例1:

int income = 0;       
for (int i = 0; i < 5; i++)
{
    income = income + i;
}

示例2:

int income = 0;     
for (int i = 0; i < 5; i++)
{
    income = income = income + i;
}

1 个答案:

答案 0 :(得分:2)

从docs.microsoft.com:

  

赋值运算符(=)存储其右侧操作数的值   在其左手表示的存储位置,属性或索引器中   操作数并返回该值作为结果。操作数必须是   相同类型(或右侧操作数必须隐式地   可转换为左侧操作数的类型。

简单赋值运算符“ =”用于将其右操作数的值存储到由左操作数表示的存储位置中。结果就是它的返回值。

因此,您的操作将执行:income= (income + i)然后(income)=(income),完全有效。

如果您在理解income= (income + i)时遇到问题,那么,运算符“ +”具有返回类型,因此请像这样看它:int j =(int j + int i)其中(int j + int i)有返回类型int

这也适用于原始类型,如果您尝试使用用户定义的类来执行此操作,则必须重载运算符“ +”

请参阅 https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/operators/ 有关C#中运算符的信息