C# 类型转换

🔄 C# 类型转换(Type Conversion)

📌 目录

  1. 类型转换分类
  2. 强制转换 (T)value
  3. int.Parse() / float.Parse()
  4. Convert.ToInt32()
  5. .ToString()
  6. as 运算符
  7. 各种转换方式对比表

1️⃣ 类型转换分类

类型 说明 示例
隐式转换 安全、不丢失信息 int → floatfloat → double
显式转换 可能丢失精度,需要手动指定 float → intdouble → int
引用类型转换 类与接口之间的转换 object → stringFather → Son

2️⃣ 强制转换 (T)value

✔ 用法

int a = (int)3.6f;   // → 3(截断)

✔ 特点

  • 只能用在“数值类型”和“引用类型继承链中”
  • 会抛异常:引用类型转换失败 → InvalidCastException
  • 精度可能丢失

✔ 不适用

不能用于字符串转数字:

(int)"123";   // ❌ 无法编译

3️⃣ int.Parse("123")

✔ 用法

int a = int.Parse("123");

✔ 特点

  • 只能处理字符串 → 数值
  • 字符串格式错误会抛异常 FormatException
  • 不处理 null(会 ArgumentNullException

✔ 适用场景

从文本、输入框读取数字字符。


4️⃣ Convert.ToInt32(value)

✔ 用法

int a = Convert.ToInt32("123");
int b = Convert.ToInt32(null);   // → 0

✔ 特点

  • 能处理更多类型:stringboolfloatdoublenull
  • 遇到 null 不报错,返回 0
  • Parse() 更安全

✔ 推荐场景

数据来源不确定是否为 null 时。


5️⃣ .ToString()

✔ 用法

int a = 10;
string s = a.ToString();   // "10"

✔ 特点

  • 各类型 → 字符串
  • 不会抛异常(除非对象本身为 null)
  • 常用于 UI 输出、日志打印

⚠ 注意

object obj = null;
obj.ToString();   // ❌ NullReferenceException

6️⃣ value as T

✔ 用法

object obj = "Hello";
string s = obj as string;    // "Hello"

object obj2 = 123;
string s2 = obj2 as string;  // null(不会异常)

✔ 特点

  • 只能用于 引用类型(class)或 nullable(如 int?
  • 转换失败返回 null
  • 不会抛异常

✔ 适用场景

当你不确定类型但不想让程序崩溃:

MyClass mc = obj as MyClass;
if (mc != null) { ... }

7️⃣ 各转换方式对比

转换方式 适用类型 失败时 是否安全 常用场景
(T)value 数值、继承链的引用类型 抛异常 数值截断、父子类强制转换
Parse() 仅字符串 抛异常 读取用户输入
Convert.ToInt32() 几乎所有类型 字符串格式异常会报错;null → 0 ✔ 比较安全 数据不确定时
ToString() 所有非 null 对象 null → 异常 UI显示、日志、调试
as 引用类型 返回 null ✔ 最安全 不确定对象真实类型

🌟 最简总结

  • (T) → 强制转换 → 有风险
  • Parse → 字符串解析 → 不接受 null
  • Convert → 更安全 → null → 0
  • ToString → 任何对象转文本
  • as → 引用类型安全转换 → 失败→null,不抛异常
posted @ 2025-12-05 11:20  高山仰止666  阅读(2)  评论(0)    收藏  举报