C# 运算符的简化操作(一):条件运算符

表1 列出了 C#中的全部简化赋值运算符。.

C# 运算符的简化操作(一)

把运算符放在表达式的前面称为前置,把运算符放在表达式的后面称为后置。要点是注意它们的行为方式有所不同。

递增或递减运算符可以作用于整个表达式,也可以作用于表达式的内部。当 x++和++x 单独占一行时,它们的作用是相同的,对应于语句 x=x+1。但当它们用于较长的表达式内部时,把运算符放在前面(++x)会在计算表达式之前递增x;换言之,递增了 x 后,在表达式中使用新值进行计算。而把运算符放在后面(x++)会在计算表达式之后递增 x——使用 x 的原始值计算表达式。下面的例子使用++增量运算符说明了它们的区别:

int x = 5;

if  (++x == 6) // true - x is incremented to 6 before the evaluation

{

  Console.WriteLine("This will execute");

}

if (x++ == 7) // false - x is incremented to 7 after the evaluation

{

  Console.WriteLine("This won't");

}

判断第一个 if 条件得到 true,因为在计算表达式之前,x 值从 5 递增为 6。然而,第二条 if 语句中的条件为 false,因为在计算整个表达式(x == 6)后,x 值才递增为 7。前置运算符--x 和后置运算符 x--与此类似,但它们是递减,而不是递增。

其他简化运算符,如+=和-=,需要两个操作数,通过对第一个操作数执行算术、逻辑运算,从而改变该操作数的值。例如,下面两行代码是等价的:

x += 5;

x = x+ 5;

下面介绍在 C#代码中频繁使用的基本运算符和类型强制转换运算符。

     01  条件运算符

条件运算符(?:)也称为三元运算符,是 if...else 结构的简化形式。其名称的出处是它带有 3 个操作数。它首先判断一个条件,如果条件为真,就返回一个值;如果条件为假,则返回另一个值。其语法如下:

condition ? true_value: false_value

其中 condition 是要判断的布尔表达式,true_value 是 condition 为真时返回的值,false_value 是 condition 为假时返回的值。

恰当地使用三元运算符,可以使程序非常简洁。它特别适合于给调用的函数提供两个参数中的一个。使用它可以把布尔值快速转换为字符串值 true 或 false。它也很适合于显示正确的单数形式或复数形式:

int x = 1;

string s = x + " ";

s += (x == 1 ? "man": "men");

Console.WriteLine(s);

如果 x 等于 1,这段代码就显示 1 man;如果 x 等于其他数,就显示其正确的复数形式。但要注意,如果结果需要本地化为不同的语言,就必须编写更复杂的例程,以考虑到不同语言的不同语法规则。