有人可以解释++运算符吗?

时间:2010-08-30 07:43:18

标签: c# operators

  

可能重复:
  C#: what is the difference between i++ and ++i?

我经常看到这个操作符(++)。我知道它最终会做什么,但似乎有一些我不理解的规则。例如,如果您在使用它的变量之前或之后放置它似乎很重要。有人可以解释一下吗?

6 个答案:

答案 0 :(得分:12)

声明

x++;

完全等同于

x = x + 1;

除了x仅被评估一次(如果它是涉及属性getter的表达式,则会有所不同。)

以下两者之间的区别:

DoSomething(x++);   // notice x first, then ++
DoSomething(++x);   // notice ++ first, then x

这是第一个,方法DoSomething会在增加之前看到x 之前的值。在第二个中,它将看到 new (递增)值。

有关详细信息,请参阅MSDN上的C# Operators

可以为您自己的类声明自定义++运算符,在这种情况下,运算符可以执行不同的操作。如果您想定义自己的++运算符,请参阅MSDN上的Operator Overloading Tutorial

答案 1 :(得分:3)

http://msdn.microsoft.com/en-us/library/36x43w8w(v=VS.80).aspx

增量运算符(++)将其操作数增加1.增量运算符可以出现在其操作数之前或之后:

第一种形式是前缀增量操作。操作的结果是操作数增加后的值。

第二种形式是后缀增量操作。操作的结果是操作数增加之前的值。

答案 2 :(得分:3)

如果将++运算符放在变量之前,它将首先递增。 如果将++运算符放在变量之后,则会在之后递增。

例如(C#):

int x = 0;
Console.WriteLine("x is {0}", x++); // Prints x is 0

int y = 0;
Console.WriteLine("y is {0}", ++y); // Prints y is 1

希望这可以解决它。

答案 3 :(得分:0)

好吧,如果你把它像

variable++

它首先使用变量并递增它(+1) 另一方面,如果你

++variable

首先递增变量然后使用它

答案 4 :(得分:0)

另一种看待它的方法......这里有两个与前缀/后缀++相同的函数。这说明前缀在理论上更快,因为不需要临时变量来存储“先前”值:

// same as x ++;
int PostfixIncrement(ref int x)
{
    int y = x;
    x = x + 1;
    return y;
}

// same as ++ x;
int PrefixIncrement(ref int x)
{
    x = x + 1;
    return x;
}

答案 5 :(得分:-3)

如果将++运算符放在变量之前,则首先递增。如果将++运算符放在变量之后,则会在变量之后递增。

例如(C#):

int x = 0; Console.WriteLine(“x is {0}”,x ++); //打印x为0

int y = 0; Console.WriteLine(“y is {0}”,++ y); //打印y是1