(C#基本语法)4.运算符与表达式

C# 运算符( operators )和表达式( expression )与 C/C++ 几乎完全一样,仅有的区别如下:
基元( primary )运算符: C# 新增加了如下两个基元表达式运算符:
l checked (已检验)――用于设置溢出检验上下文( overflow-checking context ),控制对整型算术表达式中的操作和转换进行溢出检验,在出现溢出时会抛出异常。格式为: checked( 表达式 ) checked{ 语句块 }
l unchecked (未检验)――用于设置溢出检验上下文( overflow-checking context ),控制对整型算术表达式中的操作和转换不进行溢出检验,在出现溢出时不抛出异常,结果为截断后的整数。格式为: unchecked( 表达式 ) unchecked{ 语句块 }
例如:
class Test {
   static readonly int x = 1000000;
   static readonly int y = 1000000;
   static int F() {
     return checked(x * y); // Throws OverflowException
  }
   static int G() {
     return unchecked(x * y); // Returns -727379968
  }
   static int H() {
     return x * y; // Depends on default
  }
}
又例如:
try
{
         int i, i2 = int.MaxValue, i2 = 200;
         i = checked(i1 * i2);    
}
catch(Exception e){
         //MessageBox.Show(e.ToString());
    Console.WriteLine(e.ToString());
}
一元运算符:全局命名空间限定符 :: ――虽然 C# 不再支持全局变量和全局函数,但是仍然有全局命名空间,所以还是保留了全局命名空间限定符“ :: ”(类似于 C++ 的全局运算符 :: )。注意,因为在 C# 中,双冒号符“ :: ”已经不再作为命名空间之间和 CLR 对象与成员之间的分隔符,而是专用的全局命名空间限定符。
二元运算符:
l 模运算符 % ――在 C# 中, % 既可以用来求整数的余。也可以用于浮点数和十进制数。例如 5 % 1.5 = 0.5
l 是运算符 is ――用于动态检验一个对象的运行时类型是否与指定类型兼容。格式为:
表达式 is 类型名
结果为一个布尔值,若表达式可以成功地转换成指定类型,则为 true ,否则为 false
l 转为运算符 as ――用于将一个值显式地转换为一个指定的引用类型或可空(值)类型。格式为:
标识符 as 类型名
转换为引用类型时,采用的是引用转换或装箱转换;转换为可空类型时,采用的是包装转换、拆箱转换或空类型转换。与强制转换不同, as 转换不会抛出异常。如果指定的转换是不可能的,则结果为空 null
is as 运算符在模板和泛型运算中非常有用。
l 空接合运算符( null coalescing operator ?? ――用于在某个可空类型变量 a 的值为空时,提供备用的值 b 。格式为:
a ?? b
a 非空时结果为 a ,否则为 b 。功能相对于: a.HasValue ? a : b 。例如:
double? x = null;
//……
double y = x ?? 0;
C# 表达式中运算符的优先级( order of precedence )与 C++ 的类似,参见下表:(其中,红色的运算符是 C# 特有的)
C# 运算符优先级表(从高到低)
优先级
类型
运算符
1
基元
. (成员,如 x.y )、 ( ) (函数,如 f(x) )、 [ ] (数组,如 a[i] )、 ++ (后缀增,如 i++ )、 -- (后缀减,如 i-- )、 new (创建对象,如 new MyClass )、 typeof (类型,如 typeof(x) )、 checked (已检验,如 checked(x*y) )、 unchecked (未检验,如 unchecked(x*y)
2
一元
+ (正,如 +x )、 - (负,如 -x )、!(逻辑非,如 !x )、 ~ (求补,如 ~x )、 ++ (前缀加,如 ++i )、 -- (前缀减,如 --i )、 () (强制类型转换,如 (int)x
3
乘性
* (乘,如 x*y )、 / (除,如 x/y )、 % (模,如 x%y
4
加性
+ (加,如 x+y )、 - (减,如 x-y
5
位移
<< (左移,如 i<<4 )、 >> (右移,如 i>>4
6
关系和
类型测试
< (小于,如 x<y )、 > (大于,如 x>y )、 <= (小于等于,如 x<=y )、 >= (大于等于,如 x>=y )、 is (是,如 x is int )、 as (转为,如 x as int
7
等性
== (相等,如 x==y )、 != (不等,如 x!=y
8
逻辑与
& (位与,如 x&4
9
逻辑异或
^ (位异或,如 x^y
10
逻辑或
| (位或,如 x|y
11
条件与
&& (逻辑与,如 x&&y
12
条件或
|| (逻辑或,如 x||y
13
空接合
?? (空接合,如 a??b
14
条件
?: (条件,如 x?a:b
15
赋值
= (等于,如 x=y )、 *= (乘等于,如 x*=y )、 /= (除等于,如 x/=y )、 += (加等于,如 x+=y )、 -= (减等于,如 x-=y )、 <<= (左移等于,如 x<<=y )、 >>= (右移等于,如 x>>=y )、 &= (位与等于,如 x&=y )、 ^= (位异或等于,如 x^=y )、 |= (位或等于,如 x|=y

你可能感兴趣的:(C#,职场,休闲)