《随笔八》——C#中的 “ 显式和隐式转换、装箱转换、拆箱转换、用户自定义转换、is运算符、as运算符”

目录

什么是转换

转换的类型 (289P)

隐式转换 (287P)

显式转换 (288P)

使用关键字 checked 和 unchecked 来设置“ 溢出检测上下文” (291P)

checked 和 unchecked 运算符 (291P)

checked 和 unchecked 语句 (292P)

显式数字转换 (292P)

整数类型到整数类型 (293P)

float 或 double 转到整数类型 (293P)

decimal 到整数类型 (293P)

double到 float ( 293P )

float 或 double 到 decimal ( 295P )

decimal 到 float 或 double ( 295P )

隐式引用转换 ( 295P )

委托可以隐式转换为 .NET BCL类 和 接口 (297P)

显式引用转换 ( 297P )

*有效显式引用转换

装箱装换

拆箱转换

用户自定义转换

多步用户自定义转换示例

is运算符

as 运算符


什么是转换


 转换( conversion )是接受一个类型的值并使用它作为另一个类型的等价值的过程。

转换后的目标类型的值应和源值一样的, 但其类型为目标类型

《随笔八》——C#中的 “ 显式和隐式转换、装箱转换、拆箱转换、用户自定义转换、is运算符、as运算符”_第1张图片 类型转换

 下面举个例子:

《随笔八》——C#中的 “ 显式和隐式转换、装箱转换、拆箱转换、用户自定义转换、is运算符、as运算符”_第2张图片 从short转换为sbyte

第三行代码把var1赋值给var2, 由于它们是两种不同的类型, 在进行赋值之前, var1的值必须先转换为与var2类型相同的值类型。这将通过强制转换表达式来实现, 稍后我们就会看到。

还要注意, var1的类型和值都没有改变。尽管称之为转换, 但只是代表源值作为目标类型来使用, 不是源值转换为目标类型。


转换的类型 (289P)


《随笔八》——C#中的 “ 显式和隐式转换、装箱转换、拆箱转换、用户自定义转换、is运算符、as运算符”_第3张图片 转换的类型

 除了标准转换, 还可以为自定义类型定义隐式转换和显式转换。

还有一个预定义的转换类型, 叫做装箱, 可以将任何值类型转换为:

  • object类型;
  • System.ValueType类型。

拆箱可以将一个装箱的值转换为原始类型


隐式转换 (287P&#x

你可能感兴趣的:(C#中的随笔,c#,显式转换,隐式转换)