C# 类型转换
- 类型转换概念:C# 中的类型转换指将一个数据类型(如
int
、float
、double
等)的值转换为另一种类型的过程。 - 隐式和显式转换:隐式类型转换由编译器自动完成,通常发生在较小的数据类型(如
int
)转换为较大的数据类型(如double
)。显式类型转换需要明确指定转换类型,用于将较大的类型转换为较小的类型。 Parse()
和Convert
类:除了隐式和显式转换外,还可以使用Parse()
方法和Convert
类进行类型转换。Parse()
适用于将字符串转换为数值类型,而Convert
类提供多种类型之间的转换方法。
将一个类型(如 int、float、double 等)的值转换为另一种类型的过程称为类型转换。
在 C# 中,有两种基本的类型转换:
- 隐式类型转换
- 显式类型转换
1. C# 中的隐式类型转换
在隐式类型转换中,C# 编译器会自动将 一种类型转换为另一种类型。
通常,较小的类型如 int
(占用较少内存)会自动转换为较大的类型如 double
(占用较多内存)。
示例:隐式类型转换
using System;
namespace MyApplication {
class Program {
static void Main(string[] args) {
int numInt = 500;
// 获取 numInt 的类型
Type n = numInt.GetType();
// 隐式转换
double numDouble = numInt;
// 获取 numDouble 的类型
Type n1 = numDouble.GetType();
// 转换前的值
Console.WriteLine("numInt 值: "+numInt);
Console.WriteLine("numInt 类型: " + n);
// 转换后的值
Console.WriteLine("numDouble 值: "+numDouble);
Console.WriteLine("numDouble 类型: " + n1);
Console.ReadLine();
}
}
}
输出
numInt 值: 500
numInt 类型: System.Int32
numDouble 值: 500
numDouble 类型: System.Double
在上面的示例中,我们创建了一个名为 numInt
的 int
类型变量。
注意这一行,
// 隐式转换
double numDouble = numInt;
这里,我们将 int
类型变量赋值给 double
类型变量。在这种情况下,C# 编译器自动将 int
类型的值转换为 double
。
注意我们使用了 GetType()
方法来检查 numInt
和 numDouble
变量的类型。
注意:在隐式类型转换中,较小的类型被转换为较大的类型。因此,在转换过程中不会丢失数据。
2. C# 显式类型转换
在显式类型转换中,我们明确地将一种类型转换为另一种类型。
通常,较大的类型如 double
(占用大量内存)会被转换为较小的类型如 int
(占用较少内存)。
示例:显式类型转换
using System;
namespace MyApplication {
class Program {
static void Main(string[] args) {
double numDouble = 1.23;
// 显式转换
int numInt = (int) numDouble;
// 转换前的值
Console.WriteLine("原始 double 值: "+numDouble);
// 转换后的值
Console.WriteLine("转换后的 int 值: "+numInt);
Console.ReadLine();
}
}
}
输出
原始 double 值: 1.23
转换后的 int 值: 1
原始 double 值: 1.23
转换后的 int 值: 1
在上述示例中,我们创建了一个名为 numDouble
的 double
变量。注意这行代码,
// 显式类型转换
int numInt = (int) numDouble;
这里,(int)
是一个强制类型转换表达式,它显式地将 double
类型转换为 int
类型。
我们可以看到原始值是 1.23,而转换后的值是 1。在类型转换过程中,一些数据丢失了。这是因为我们显式地将较大的数据类型 double
转换为较小的类型 int
。
注意:显式类型转换也称为类型转换。
C# 使用 Parse() 进行类型转换
在 C#, 我们还可以使用 Parse()
方法执行类型转换。
通常,在执行 int
和 string
等不兼容类型之间的类型转换时,我们使用 Parse()
。
示例:使用 Parse() 进行类型转换
using System;
namespace Conversion {
class Program {
static void Main(string[] args) {
string n = "100";
// 将字符串转换为 int 类型
int a = int.Parse(n);
Console.WriteLine("原始字符串值: "+n);
Console.WriteLine("转换后的 int 值: "+a);
Console.ReadLine();
}
}
}
输出
原始字符串值: 100
转换后的 int 值: 100
在上述示例中,我们将 string
类型转换为了 int
类型。
// 将字符串转换为 int 类型
int a = int.Parse(n);
这里,Parse()
方法将数字字符串 100 转换为整数值。
注意:我们不能使用 Parse()
将文本字符串(如 "test")转换为 int
。例如,
String str = "test";
int a = int.Parse(str); // 错误代码
C# 使用 Convert 类进行类型转换
在 C# 中,我们可以使用 Convert
类来执行类型转换。Convert
类提供了各种方法将一种类型转换为另一种类型。
| 方法 | 描述 |
| ToBoolean()
| 将类型转换为 Boolean
值 |
| ToChar()
| 将类型转换为 char
类型 |
| ToDouble()
| 将类型转换为 double
类型 |
| ToInt16()
| 将类型转换为 16 位 int
类型 |
| ToString()
| 将类型转换为 string
|
让我们看一些示例: