C# - 类型转换
类型转换是将一种类型的数据转换为另一种类型。它也称为类型强制转换。在 C# 中,类型强制转换有两种形式 -
隐式类型转换
隐式转换由 C# 编译器以类型安全的方式执行。例如,一个值可以从一种数据类型转换为另一种数据类型,而无需显式强制转换;可以从较小的整数类型转换为较大的整数类型;或者从派生类转换为基类。
示例
在此示例中,我们演示了隐式强制转换,当将较小的类型传递给较大的类型时,会自动进行隐式强制转换 -
using System; namespace MyExample { class Example { static void Main(string[] args) { int myInt = 9; // 自动转换:int 到 double double myDouble = myInt; Console.WriteLine(myInt); Console.WriteLine(myDouble); } } }
当编译并执行上述代码时,它会产生以下结果 -
9 9
显式类型转换
显式转换由用户使用预定义函数显式完成。显式转换需要强制类型转换运算符。
示例 1
以下示例展示了一个显式类型转换,这里我们将 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
示例 2
在以下示例中,我们在 C# 中使用显式类型转换手动将 int 转换为 float:
using System; namespace MyApplication { class Program { static void Main(string[] args) { int myInt = 10; // 手动转换:int 到 float float myFloat = (float) myInt; Console.WriteLine(myInt); Console.WriteLine(myFloat); } } }
当编译并执行上述代码时,它会产生以下结果 -
10 10
使用 Convert 类进行类型转换
C# 中的 Convert
类提供了用于显式转换各种数据类型的方法。
示例
using System; namespace ConversionExample { class Program { static void Main(string[] args) { string str = "123"; int num = Convert.ToInt32(str); Console.WriteLine(num); } } }
当编译并执行上述代码时,它会产生以下结果 -
123
使用 Parse() 方法进行类型转换
Parse()
方法用于将数字的字符串表示形式转换为其相应的数据类型。
示例
using System; namespace ParseExample { class Program { static void Main(string[] args) { string str = "456"; int num = int.Parse(str); Console.WriteLine(num); } } }
当编译并执行上述代码时,它会产生以下结果 -
456
使用 TryParse() 方法进行类型转换
TryParse()
方法可以安全地将字符串转换为数字数据类型,并返回指示成功或失败的布尔值。
示例
using System; namespace TryParseExample { class Program { static void Main(string[] args) { string str = "789"; if (int.TryParse(str, out int result)) { Console.WriteLine(result); } else { Console.WriteLine("Conversion failed."); } } } }
当编译并执行上述代码时,它会产生以下结果 -
789
C# 类型转换方法
C# 提供以下内置类型转换方法 -
序号 | 方法 &说明 |
---|---|
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 将类型转换为无符号整型。 |
15 | ToUInt32 将类型转换为无符号长整型。 |
16 | ToUInt64 将类型转换为无符号长整型整数。 |
示例
以下示例将各种值类型转换为字符串类型 -
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