什么是隐式类型转换和显式类型转换?能否举例说明?

360影视 2025-01-26 00:34 2

摘要:// 示例 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; // 类型检查后强制转换}

开发中,应尽量使用隐式转换,显式转换时需确保数据范围兼容或进行错误处理以避免意外情况。

来源:面试八股文

相关推荐