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