This article is currently in the process of being translated into Chinese (~92% done).
Increment/decrement operators
在处理值时,尤其是数字类型的值,常常需要对其做加1或减1的操作。当然,这很简单 - 只需把值加1,然后重新赋给原变量即可。如下例所示:
int userAge = 41;
userAge = userAge + 1;
userAge变量值变成了42不再是41 - 简单吧!需要减1时当然也同样简单:
userAge = userAge - 1;
后缀增/减量运算
不过C#还有更简捷的方法来做这种操作:增/减量运算符。只需简单地把两个加号或减号连在一起。用此方法把第一个例子改写如下:
int userAge = 41;
userAge++;
Console.WriteLine("Age of user: " + userAge);
结果完全一样,但代码就简捷多了!甚至还能对此进行简化,因为此运算符显然可以用在现有的表达式里面:
int userAge = 41;
Console.WriteLine("Age of user: " + userAge++);
然而,如果运行此代码,会发现userAge变量值输出的仍然是41。为什么呢?因此为上例使用的是后缀版本,即运算是在其所在的表达式运算之后再进行的。换言之,输出操作先于增量操作。某些情况下可能就需要这样,但这样的优化并不适合此特定场景。此处需要换用前缀增量运算符。
前缀增/减量运算
此运算符与后缀版本看似完全一样,但其位置在变量的前面而非后面,这指示编译器在计算此运算符所在的表达式之前先计算此运算符:
int userAge = 41;
Console.WriteLine("Age of user: " + ++userAge);
这样输出的结果就对了,userAge会在代码执行输出操作之前就进行增量运算。上例上中的三个+号可能看着很混乱,不过第一个是用来连接字符串的,而后两个才是真正的增量运算符。如果愿意,可以把增量运算表达式用括号括起来以增强代码的可读性:
Console.WriteLine("Age of user: " + (++userAge));
反正结果都一样的,无所谓!
当然也可以象前面例子中那样以同样的方式使用减量运算符。以下是后缀版本:
int userAge = 41;
Console.WriteLine("Age of user: " + (userAge--));
以及前缀版本:
int userAge = 41;
Console.WriteLine("Age of user: " + (--userAge));
总结
C#提供了增/减量运算符用于简化特定场景下的代码:当仅需对变量值进行加1或减1操作时。下一章会介绍加法赋值运算符,与此增量运算符很象,但应用范围要宽一些。
此运算符与其它某些C#运算符一样,属于简化代码类 - 不用此运算符也一样能实现同样的操作,但用此运算符会让代码非常简捷。但这对代码的可读性影响却是很主观的 - 有人喜欢这种形式,也有人觉得不使用此操作符的代码可读性更好。因此完全由程序员自己决定!