跳到主要内容

C# 类型转换

提示
  1. 类型转换概念:C# 中的类型转换指将一个数据类型(如 intfloatdouble 等)的值转换为另一种类型的过程。
  2. 隐式和显式转换:隐式类型转换由编译器自动完成,通常发生在较小的数据类型(如 int)转换为较大的数据类型(如 double)。显式类型转换需要明确指定转换类型,用于将较大的类型转换为较小的类型。
  3. Parse()Convert:除了隐式和显式转换外,还可以使用 Parse() 方法和 Convert 类进行类型转换。Parse() 适用于将字符串转换为数值类型,而 Convert 类提供多种类型之间的转换方法。

将一个类型(如 int、float、double 等)的值转换为另一种类型的过程称为类型转换。

在 C# 中,有两种基本的类型转换:

  1. 隐式类型转换
  2. 显式类型转换

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

在上面的示例中,我们创建了一个名为 numIntint 类型变量。

注意这一行,

// 隐式转换
double numDouble = numInt;

这里,我们将 int 类型变量赋值给 double 类型变量。在这种情况下,C# 编译器自动将 int 类型的值转换为 double

注意我们使用了 GetType() 方法来检查 numIntnumDouble 变量的类型。

注意:在隐式类型转换中,较小的类型被转换为较大的类型。因此,在转换过程中不会丢失数据。

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

在上述示例中,我们创建了一个名为 numDoubledouble 变量。注意这行代码,

// 显式类型转换
int numInt = (int) numDouble;

这里,(int) 是一个强制类型转换表达式,它显式地将 double 类型转换为 int 类型。

我们可以看到原始值是 1.23,而转换后的值是 1。在类型转换过程中,一些数据丢失了。这是因为我们显式地将较大的数据类型 double 转换为较小的类型 int

注意:显式类型转换也称为类型转换。

C# 使用 Parse() 进行类型转换

在 C#, 我们还可以使用 Parse() 方法执行类型转换。

通常,在执行 intstring 等不兼容类型之间的类型转换时,我们使用 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 |

让我们看一些示例:

示例:将 int 转换为 String 和 Double

using System;

using System;
namespace Conversion {
class Program {
static void Main(string[] args) {

// 创建 int 变量
int num = 100;
Console.WriteLine("int 值: " + num);

// 将 int 转换为 string
string str = Convert.ToString(num);
Console.WriteLine("string 值: " + str);

// 将 int 转换为 Double
Double doubleNum = Convert.ToDouble(num);
Console.WriteLine("Double 值: " + doubleNum);

Console.ReadLine();
}
}
}

输出

int 值: 100
string 值: 100
Double 值: 100

在上面的示例中,

  • Convert.ToString(a) - 将 int 类型的 num 转换为 string
  • Convert.ToDouble(a) - 将 num 转换为 Double 类型

示例:将字符串转换为 Double 类型,反之亦然

using System;

namespace Conversion {
class Program {
static void Main(string[] args) {

// 创建字符串变量
string str = "99.99";
Console.WriteLine("原始字符串值: " + str);

// 将字符串转换为 double
Double newDouble = Convert.ToDouble(str);
Console.WriteLine("转换后的 Double 值: " + newDouble);

// 创建 double 变量
double num = 88.9;
Console.WriteLine("原始 double 值: " + num);

// 将 double 转换为字符串
string newString = Convert.ToString(num);
Console.WriteLine("转换后的字符串值: " + newString);

Console.ReadLine();
}
}
}

输出

原始字符串值: 99.99
转换后的 Double 值: 99.99
原始 double 值: 88.9
转换后的字符串值: 88.9

在上述示例中,

  • Convert.ToDouble(str) - 将 string 类型的 str 转换为 Double
  • Convert.ToString(num) - 将 double 类型的 num 转换为 string

示例 3:将 int 转换为 Boolean

using System;

namespace Conversion {
class Program {
static void Main(string[] args) {

// 创建 int 变量
int num1 = 0;
int num2 = 1;

// 将 int 转换为 Boolean
Boolean bool1 = Convert.ToBoolean(num1);
Boolean bool2 = Convert.ToBoolean(num2);

Console.WriteLine("0 的 Boolean 值是: " + bool1);
Console.WriteLine("1 的 Boolean 值是: " + bool2);

Console.ReadLine();
}
}
}

输出

0 的 Boolean 值是: False
1 的 Boolean 值是: True

在上述示例中,我们创建了两个整数变量:num1num2,其值分别为 01。这里,

  • Convert.ToBoolean(num1) - 将 0 转换为 BooleanFalse
  • Convert.ToBoolean(num2) - 将 1 转换为 BooleanTrue

注意:在 C# 中,整数值 0 被视为 False,所有其他值被视为 True