> 条件运算符 - 条件运算符(?:)也称为三元运算符,是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 编译器选项进行编译,就可以检查程序中所有未标记代码的溢出。 - 如果要禁止溢出检查,则可以把代码标记为unchecked: ``` 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运算符** - 使用sizeof运算符可以确定栈中值类型需要的长度 **typeof运算符** - typeof运算符返回一个表示特定类型的System.Typed对象。在使用反射技术动态地查找对象的相关信息时,这个运算符很有用。 **nameof运算符** - 该运算符接受一个符号、属性或方法,并返回其名称。 **可空类型和运算符** - 值类型和引用类型的一个重要区别是,引用类型可以为空。值类型(如int)不能为空。