摘要:// 示例 1: 从小范围类型到大范围类型int intValue = 100;long longValue = intValue; // 隐式转换,int 转为 long// 示例 2: 从派生类到基类class Animal {}class Dog : A
隐式类型转换由编译器自动完成,不需要开发者显式指明。它通常发生在数据类型之间兼容且不会引发数据丢失的情况下。
// 示例 1: 从小范围类型到大范围类型int intValue = 100;long longValue = intValue; // 隐式转换,int 转为 long// 示例 2: 从派生类到基类class Animal {}class Dog : Animal {}Dog dog = new Dog;Animal animal = dog; // 隐式转换,Dog 转为 Animal隐式转换不会引发异常,但可能会增加存储需求。例如,int 转换为 long 会占用更多内存。
显式类型转换需要开发者通过强制转换语法 (type) 明确指定转换行为。当数据类型之间不兼容或可能导致数据丢失时,需要进行显式类型转换。
// 示例 1: 从大范围类型到小范围类型double doubleValue = 123.45;int intValue = (int)doubleValue; // 显式转换,截断小数部分,结果为 123// 示例 2: 非兼容类型之间的转换object obj = 42;int intValue2 = (int)obj; // 显式转换,运行时成功特性隐式类型转换显式类型转换将一个类型转换为另一个类型,适合需要检查范围的显式转换。
string str = "123";int intValue = Convert.ToInt32(str); // 将字符串转换为整数推荐在字符串转换为数值类型时使用,可避免异常。
string input = "456";if (int.TryParse(input, out int result)){Console.WriteLine($"成功解析: {result}");}else{Console.WriteLine("解析失败");}常用于引用类型的安全转换。
object obj = "Hello";string str = obj as string; // 安全转换,如果失败返回 nullif (obj is string){string str2 = (string)obj; // 类型检查后强制转换}开发中,应尽量使用隐式转换,显式转换时需确保数据范围兼容或进行错误处理以避免意外情况。
来源:面试八股文
免责声明:本站系转载,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与本站联系,我们将在第一时间删除内容!