鼎鼎知识库
Nelze vybrat více než 25 témat Téma musí začínat písmenem nebo číslem, může obsahovat pomlčky („-“) a může být dlouhé až 35 znaků.

23.运算符与类型强制转换.md 2.8KB

条件运算符

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