C# 中的类型转换

2025 年 3 月 28 日 | 阅读 4 分钟

将一种数据类型的变量更改为另一种数据类型称为类型转换。根据我们的需要,我们可以更改数据类型。在编译时,C# 是静态类型的,即在声明变量后,我们不能再次声明它。除非我们隐式地更改变量的类型,否则变量的值不能赋值给另一种类型的变量。

这里我们将以字符串数据类型为例。我们不能隐式地将字符串转换为 int。因此,如果我们将变量“i”声明为 int,我们就不能将字符串值“Hello”赋值给它。

然而,我们可能会遇到需要将一个变量的值复制到另一个变量或另一个类型的方法参数中的情况。例如,我们有一个整型变量,需要将其传递给类型为 double 的方法参数。或者情况可能是将类变量赋值给接口类型的变量。这些类型的操作称为类型转换

在 C# 中,我们可以执行不同类型的转换。

  • 隐式转换:对于隐式转换,不需要任何特殊的语法。这种类型的转换是安全的;在这种转换中,不会有任何数据丢失。隐式转换包括小类型到大整数类型的转换,以及从派生类到基类的转换。
  • 显式转换(类型强制转换):显式转换将通过强制转换运算符 () 完成。当存在数据丢失的情况或转换不成功时,我们将进行强制转换。显式转换可能还有其他原因。强制转换的例子是将数字类型转换为精度较低或范围较小的类型。显式转换还包括将基类实例转换为派生类。
  • 用户定义转换:我们可以通过定义方法来完成此转换。我们可以使用该技术来实现自定义类型之间的显式-隐式转换,这些自定义类型与基类或派生类没有任何关系。

使用帮助类进行转换:对于不兼容类型(例如整数System.DateTime 对象或十六进制字符串和字节数组)的转换,我们可以使用 System.BitConversion 类、System.Convert 类以及内置数字类型(如 int32 Parse)的 Parse 方法。

隐式转换:我们可以轻松理解和使用隐式转换。这里我们将整数赋值给双精度浮点数,这被称为隐式转换,因为在这种转换中我们没有丢失任何数据。

为了理解这种转换,我们将举一个例子。

这里我们有两个整型变量 value1 和 value2。我们将对两个整型变量求和并将结果存储在 long 变量中。这里不会显示任何错误,并且我们不会丢失任何数据。这种类型的转换称为隐式转换。

示例

输出

Type Casting in C#

显式转换

我们可以通过定义方法来执行显式转换。用户将执行显式转换。用户将根据他们的要求执行转换。编译器将根据我们的命令执行。

现在我们将通过应用以下代码来执行此转换

示例

输出

Type Casting in C#

转换运算符

转换运算符具有以下属性

  • 声明为“隐式”的转换将在需要时自动发生。
  • 声明为“显式”的转换将需要调用强制转换。
  • 所有转换都必须声明为正。

现在我们将举一个遵循以下代码的例子。

输出

Type Casting in C#