深入理解 C# 类型转换:隐式与显式转换全解析
类型转换是指将一种数据类型转换为另一种数据类型,也称为类型强制转换。在 C# 中,类型转换主要分为两种形式:
- 隐式类型转换:由 C# 自动以类型安全的方式执行。例如,从较小的整数类型转换为较大的整数类型,以及从派生类转换为基类。
- 显式类型转换:需要用户通过预定义函数或强制转换运算符显式完成。显式转换需要使用强制转换运算符。
显式类型转换示例
以下代码演示了将 double 类型显式转换为 int 类型:
using System;
namespace TypeConversionApplication {
class ExplicitConversion {
static void Main(string[] args) {
double d = 5673.74;
int i;
// 将 double 强制转换为 int
i = (int)d;
Console.WriteLine(i);
Console.ReadKey();
}
}
}
编译执行后输出结果:
5673
C# 内置类型转换方法
C# 提供了以下内置类型转换方法(均位于 Convert 类中):
| 序号 | 方法及说明 |
|---|---|
| 1 | ToBoolean - 将类型转换为布尔值(如果可能) |
| 2 | ToByte - 将类型转换为字节 |
| 3 | ToChar - 将类型转换为单个 Unicode 字符(如果可能) |
| 4 | ToDateTime - 将类型(整数或字符串)转换为日期时间结构 |
| 5 | ToDecimal - 将浮点数或整数类型转换为十进制类型 |
| 6 | ToDouble - 将类型转换为双精度浮点数 |
| 7 | ToInt16 - 将类型转换为 16 位整数 |
| 8 | ToInt32 - 将类型转换为 32 位整数 |
| 9 | ToInt64 - 将类型转换为 64 位整数 |
| 10 | ToSByte - 将类型转换为有符号字节类型 |
| 11 | ToSingle - 将类型转换为单精度浮点数 |
| 12 | ToString - 将类型转换为字符串 |
| 13 | ToType - 将类型转换为指定类型 |
| 14 | ToUInt16 - 将类型转换为无符号 16 位整数 |
| 15 | ToUInt32 - 将类型转换为无符号 32 位整数 |
| 16 | ToUInt64 - 将类型转换为无符号 64 位整数 |
各类型转字符串示例
using System;
namespace TypeConversionApplication {
class StringConversion {
static void Main(string[] args) {
int i = 75;
float f = 53.005f;
double d = 2345.7652;
bool b = true;
Console.WriteLine(i.ToString());
Console.WriteLine(f.ToString());
Console.WriteLine(d.ToString());
Console.WriteLine(b.ToString());
Console.ReadKey();
}
}
}
输出结果:
75
53.005
2345.7652
True
注意:显式转换可能导致数据丢失(如小数部分被截断)或抛出异常(如溢出),实际开发中建议结合 TryParse 或 checked/unchecked 上下文使用。
C语言
- ASTM A1018 CS Type B 低碳钢规格与典型性能参数
- ASTM A424 Type II 低碳钢规格与性能指标
- ASTM A424 Type I 低碳钢关键性能与应用表现
- ASTM A792 CS Type A 镀铝锌钢板 — 低碳钢基材性能与规格详解
- ASTM A53 Grade A Type E 电阻焊钢管 — 规格与关键性能参数
- ASTM A53 Grade A Type S 无缝钢管 — 规格与关键性能参数
- ASTM A792 Grade CS Type C 镀铝锌钢板 — 关键性能与规格参数
- 掌握 C# 类型转换:隐式、显式、Parse 与 Convert 全方位指南
- 精通Python类型转换与强制转换:综合指南
- 精通 Python 数字、类型转换与数学运算
- 掌握 Java 类型转换:从自动拓宽到强制收窄及更多
- Java 泛型深度解析:类型安全、擦除机制与通配符实战