C# 运算符
更新:2007 年 11 月
C# 提供大量运算符,这些运算符是指定在表达式中执行哪些操作的符号。通常允许对枚举进行整型运算,例如 ==、==、==、==、==、==、==、==、==、==、==、==、==、== 和 ==。此外,很多运算符可被用户重载,由此在应用到用户定义的类型时更改这些运算符的含义。
下表列出了按优先级顺序分组的 C# 运算符。每个组中的运算符具有相同的优先级。
运算符类别 |
运算符 |
---|---|
基本 |
|
一元 |
|
乘法 |
|
加法 |
|
移位 |
|
关系和类型检测 |
|
相等 |
|
逻辑“与” |
|
逻辑“异或” |
|
逻辑“或” |
|
条件“与” |
|
条件“或” |
|
条件 |
|
赋值 |
|
null 合并 |
|
Lambda |
算术溢出
算术运算符(+、-、*、/)产生的结果可能会超出涉及的数值类型可能值的范围。详细信息应参考有关特定运算符的章节,而一般情况下:
整数算术溢出或者引发 OverflowException,或者丢弃结果的最高有效位。整数被零除总是引发 DivideByZeroException。
浮点算术溢出或被零除从不引发异常,因为浮点类型基于 IEEE 754,因此可以表示无穷和 NaN(不是数字)。
小数算术溢出总是引发 OverflowException。小数被零除总是引发 DivideByZeroException。
当发生整数溢出时,产生的结果取决于执行上下文,该上下文可为 checked 或 unchecked。在 checked 上下文中引发 OverflowException。在未选中的上下文中,放弃结果的最高有效位并继续执行。因此,C# 使您有机会选择处理或忽略溢出。
除算术运算符以外,整型之间的强制转换也会导致溢出(例如,将 long 强制转换为 int)并受 checked 或 unchecked 执行的限制。然而,按位运算符和移位运算符永远不会导致溢出。
请参见
任务
概念
参考
其他资源
修订记录
日期 |
修订 |
原因 |
---|---|---|
2008 年 7 月 |
根据客户建议将赋值类别中的 ??运算符归入其他类别。 |
内容 Bug 修复 |