{ static void Main() { Color c;//声明Color的变量c; c=(Color)4;//对数字3进行显示枚举转换 Console.WriteLine("c的值是{0}",c); } } 结果:c的值是4 Convert 类 将一个基本数据类型转换为另一个基本数据类型。 该类返回值与指定类型的值等效的类型。受支持的基类型是 Boolean、Char、SByte、Byte、Int16、Int32、Int64、UInt16、UInt32、UInt64、Single、Double、Decimal、DateTime 和 String。
存在将每个基类型转换为每个其他基类型的转换方法。不过,所执行的实际转换操作分为三类:
从某类型到它本身的转换只返回该类型。不实际执行任何转换。 无法产生有意义的结果的转换引发 InvalidCastException。不实际执行任何转换。下列转换会引发异常:从 Char 转换为 Boolean、Single、Double、Decimal 或 DateTime,以及从这些类型转换为 Char。下列转换会引发异常:从 DateTime 转换为除 String 之外的任何类型,以及从任何类型(String 除外)转换为 DateTime。 任何基类型(上面描述的基类型除外)都可以与任何其他基类型进行相互转换。 如果数字类型转换导致精度丢失(即某些最低有效位丢失),不引发异常。但是,如果结果超出了特定转换方法的返回值类型所能表示的范围,则将引发异常。
下面介绍一下和类型转换相关的装箱、取消装箱 装箱是值类型到 object 类型或到该值类型所实现的任何接口类型的隐式转换。将一个值的值装箱会分配一个对象实例并将该值复制到新的对象中。
请看以下值类型变量的声明:
int i = 123; 以下语句对变量 i 隐式应用装箱操作:
object o = i; 此语句的结果是在堆栈上创建对象 o,而该对象在堆上引用 int 类型的值。该值是赋给变量 i 的值类型值的一个副本。下图说明了两个变量 i 和 o 之间的差异。
装箱转换 在堆栈上 在堆上 i 123 int i=123; o (将i装箱) object o=i; int 123 也可以(但绝不必要)如下例所示显式执行装箱: int i = 123; object o = (object) i; 示例 此例将整数变量 i 通过装箱转换为对象 o。这样,存储在变量 i 中的值就从 123 更改为 456。此例显示对象保留了内容的原始副本,即 123。 // boxing.cs // Boxing an integer variable using System; class TestBoxing { public static void Main() { int i = 123; object 上一页 [1] [2] [3] [4] 下一页 |