1. 隐式转换(Implicit Conversion):
隐式转换是指从较小的数据类型向较大的数据类型进行转换,系统会自动完成,无需显式说明。例如,将 int 类型转换为 long 类型:
int intValue = 42;
long longValue = intValue; // 隐式转换
在这个例子中,int 类型的值被隐式转换为 long 类型。
2. 显式转换(Explicit Conversion):
显式转换是在代码中明确指定要进行的转换,通常使用强制类型转换运算符。例如,将 double 类型转换为 int 类型:
double doubleValue = 3.14;
int intValue = (int)doubleValue; // 显式转换
在这个例子中,使用了 (int) 强制类型转换运算符将 double 类型的值转换为 int 类型。
3. 类型转换方法:
C# 还提供了一些内置的类型转换方法,如 Convert.ToXxx 方法,用于将一种类型转换为另一种类型。例如,将字符串转换为整数:
string numericString = "123";
int number = Convert.ToInt32(numericString);
请注意,在进行类型转换时可能会发生溢出或精度丢失。因此,在进行类型转换之前,最好进行适当的验证或使用安全的转换方法,如 int.TryParse。
4. 转换操作符:
C# 还允许用户自定义转换操作符,这是用户定义类型的一部分,允许对象在不同类型之间进行转换。这包括隐式和显式转换操作符。
class Temperature
{
public double Celsius { get; set; }
// 用户定义的隐式转换操作符
public static implicit operator Fahrenheit(Temperature t)
{
return new Fahrenheit { Value = t.Celsius * 9 / 5 + 32 };
}
}
class Fahrenheit
{
public double Value { get; set; }
// 用户定义的显式转换操作符
public static explicit operator Celsius(Fahrenheit f)
{
return new Celsius { Value = (f.Value - 32) * 5 / 9 };
}
}
class Celsius
{
public double Value { get; set; }
}
// 使用隐式转换
Temperature temperature = new Temperature { Celsius = 25 };
Fahrenheit fahrenheit = temperature; // 隐式转换
// 使用显式转换
Celsius celsius = (Celsius)fahrenheit; // 显式转换
在上述例子中,Temperature 类和 Fahrenheit 类之间定义了隐式转换操作符,而 Fahrenheit 类和 Celsius 类之间定义了显式转换操作符。
总的来说,在进行类型转换时,要确保目标类型能够容纳源类型的值,以避免数据丢失或溢出的问题。
转载请注明出处:http://www.pingtaimeng.com/article/detail/14745/C#