C#类型转换学习笔记

C#中的数据类型转换是很常见的操作,它指的是将一个类型的变量转换为另一个类型的变量。在本文中,我们将介绍C#中的类型转换以及如何进行数据类型转换。

隐式类型转换

当两个数据类型可以用于相同的计算时,C#将执行隐式类型转换。这种类型转换不需要用户明确地指定转换,编译器会自动执行转换。

例如,将一个int类型的值赋给long类型的变量时,就会执行隐式类型转换:

csharpCopy Code
int x = 10; long y = x; // 隐式类型转换

在这个例子中,x是int类型,y是long类型。当我们将x赋值给y时,编译器会自动将x转换为long类型,这就是隐式类型转换。

以下是可以执行隐式类型转换的一些数据类型:

  • sbyte -> short -> int -> long -> float -> double -> decimal
  • byte -> ushort -> uint -> ulong -> float -> double -> decimal
  • char -> ushort -> int -> uint -> long -> ulong -> float -> double -> decimal
  • bool -> 无可转换类型

值得注意的是,不能从较大的类型转换为较小的类型,否则会发生溢出。

显式类型转换

当两个数据类型不能用于相同的计算时,C#需要执行显式类型转换。这种类型转换需要用户明确地指定转换,编译器不会自动执行转换。

在C#中,有两种方式实现显式类型转换:强制类型转换和转换方法。

强制类型转换

强制类型转换是将一个数据类型的变量强制转换为另一个数据类型的变量。强制类型转换使用括号将要转换的数据类型包裹起来,如下所示:

csharpCopy Code
double d = 123.456; int i = (int)d; // 显式类型转换

在这个例子中,d是double类型,i是int类型。当我们将d转换为int类型时,需要使用强制类型转换符号将d包裹起来,并将其转换为int类型。

需要注意的是,如果强制类型转换导致溢出,则会丢失精度并产生错误结果。

转换方法

C#提供了一些转换方法可以用于执行显式类型转换。以下是一些常用的转换方法:

  • Convert.ToBoolean
  • Convert.ToByte
  • Convert.ToDecimal
  • Convert.ToDouble
  • Convert.ToInt16
  • Convert.ToInt32
  • Convert.ToInt64
  • Convert.ToSByte
  • Convert.ToSingle
  • Convert.ToChar
  • Convert.ToString

这些方法将一个类型的变量转换为另一个类型的变量,并且会抛出异常或返回默认值,以表示转换是否成功。

实例

以下是一些类型转换的实例:

csharpCopy Code
using System; class Program { static void Main() { // 隐式类型转换 int a = 10; long b = a; float c = a; // 显式类型转换 double d = 123.456; int e = (int)d; // 转换方法 string f = "100"; int g = Convert.ToInt32(f); bool h = Convert.ToBoolean(g); Console.WriteLine("a = " + a); Console.WriteLine("b = " + b); Console.WriteLine("c = " + c); Console.WriteLine("d = " + d); Console.WriteLine("e = " + e); Console.WriteLine("f = " + f); Console.WriteLine("g = " + g); Console.WriteLine("h = " + h); } }

在这个例子中,我们演示了隐式类型转换、显式类型转换和转换方法。