在 C# 中,类型转换是将一个数据类型的值转换为另一个数据类型的过程。C# 支持两种主要的类型转换:隐式类型转换和显式类型转换。

1. 隐式类型转换(Implicit Conversion):

在某些情况下,C# 允许从一个数据类型隐式地转换为另一个数据类型,而无需显式指定转换操作。这通常发生在从小范围类型到大范围类型的转换时。
int intValue = 10;
double doubleValue = intValue; // 隐式类型转换

在上面的例子中,int 类型的值被隐式转换为 double 类型。

2. 显式类型转换(Explicit Conversion):

在某些情况下,需要显式地告诉编译器进行类型转换。这通常发生在从大范围类型到小范围类型、不同数据类型之间的转换时。

使用强制类型转换:
double doubleValue = 10.5;
int intValue = (int)doubleValue; // 显式类型转换

使用 Convert 类:
double doubleValue = 10.5;
int intValue = Convert.ToInt32(doubleValue); // 显式类型转换

使用 Parse 方法:
string numberString = "123";
int intValue = int.Parse(numberString); // 显式类型转换

3. 装箱(Boxing)和拆箱(Unboxing):

装箱是将值类型转换为引用类型的过程,而拆箱是将引用类型转换为值类型的过程。
int intValue = 42;

// 装箱
object boxedValue = intValue;

// 拆箱
int unboxedValue = (int)boxedValue;

请注意,装箱和拆箱可能会导致性能损失,因为它们涉及到在堆上分配内存。

4. as 操作符:

as 操作符用于尝试将一个对象转换为指定的引用类型,如果转换失败,返回 null。
object obj = "Hello, C#!";
string str = obj as string;

if (str != null)
{
    Console.WriteLine(str);
}
else
{
    Console.WriteLine("Conversion failed.");
}

在进行类型转换时,务必确保目标类型可以接受原始类型的值,否则会导致运行时异常。在某些情况下,你可能需要使用异常处理机制来处理转换失败的情况。


转载请注明出处:http://www.zyzy.cn/article/detail/6337/C#