|
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- > 条件运算符
- - 条件运算符(?:)也称为三元运算符,是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)不能为空。
-
|