条件运算符
- 条件运算符(?:)也称为三元运算符,是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"); WriteLine(s); 如果x等于1,这段代码就显示1 man:如果x等于其他数,就显示其正确的复数形式
checked和unchecked运算符
- 如果把一个代码块标记为checked,CLR就会执行溢出检查,如果发生溢出,就抛出OverflowException异常 ``` byte b=255; checked { b++; } WriteLine(b); 运行改代码,会得到错误信息: system.OverflowException:Arithmetic operation resultes in an overflow.
```
- 用/checked 编译器选项进行编译,就可以检查程序中所有未标记代码的溢出。
byte b=255;
unchecked
{
b++;
}
WriteLine(b);
is运算符
- is运算符可以检查对象是否与特定的类型兼容。短语“兼容”表示对象或者是该类型,或者派生自该类型。
- 例如,要检查变量是否与object类型兼容,代码如下
int i=10; if(i is object) { WriteLine("i is an object"); }
as 运算符
- as 运算符用于执行引用类型的显示类型转换。如果要转换的类型与指定的类型兼容,转换就会成功进行;如果类型不兼容,as运算符就会返回null值。
- 下面的代码,如果object引用实际上不引用string实例,把object引用转换为string就会返回null: ``` object o1=“Some String”; object o2=5; string s1=o1 as string;//s1=“Some String” string s2=o2 as string;//s2=null
```
- as 运算符允许在一步中进行安全的类型转换,不需要先试用is运算符测试类型,再执行转换。
sizeof运算符
typeof运算符
nameof运算符
可空类型和运算符