C# 类型转换
类型转换 就是把数据从一种类型转换成另一种类型。
在 C# 中,类型转换有两种形式:
-
隐式类型转换 - 隐式转换:C# 默认的以安全方式进行的转换。 本质是从小存储容量数据类型自动转换为大存储容量数据类型,从派生类转换为基类。
-
显式类型转换 - 显式转换:通过用户使用预定义的函数显式完成的,显式转换需要强制转换运算符。 转换类型的范围大小和从属关系和隐式转换相反。显式转换可能会导致数据出错,或者转换失败,甚至无法编译成功。
下面的范例显示了一个显式的类型转换:
using System; namespace TypeConversionApplication { class ExplicitConversion { static void Main(string[] args) { double d = 4567.89; int i; // 强制转换 double 为 int i = (int)d; Console.WriteLine(i); Console.ReadKey(); } } }
当上面的代码被编译和执行时,它会产生下列结果:
4567
C# 类型转换方法
C# 提供了下列内置的类型转换方法:
方法 | 描述 |
---|---|
ToBoolean() | 尽可能把类型转换为布尔型 |
ToByte() | 把类型转换为字节类型 |
ToChar() | 尽可能把类型转换为单个 Unicode 字符类型 |
ToDateTime() | 把类型(整数或字符串类型)转换为 日期-时间 结构 |
ToDecimal() | 把浮点型或整数类型转换为十进制类型 |
ToDouble() | 把类型转换为双精度浮点型 |
ToInt16() | 把类型转换为 16 位整数类型 |
ToInt32() | 把类型转换为 32 位整数类型 |
ToInt64() | 把类型转换为 64 位整数类型 |
ToSbyte() | 把类型转换为有符号字节类型 |
ToSingle() | 把类型转换为小浮点数类型 |
ToString() | 把类型转换为字符串类型 |
ToType() | 把类型转换为指定类型 |
ToUInt16() | 把类型转换为 16 位无符号整数类型 |
ToUInt32() | 把类型转换为 32 位无符号整数类型 |
ToUInt64() | 把类型转换为 64 位无符号整数类型 |
下面的范例把不同值的类型转换为字符串类型:
using System; namespace TypeConversionApplication { class StringConversion { static void Main(string[] args) { int i = 78; float f = 48.005f; double d = 2345.6789; bool b = true; Console.WriteLine(i.ToString()); Console.WriteLine(f.ToString()); Console.WriteLine(d.ToString()); Console.WriteLine(b.ToString()); Console.ReadKey(); } } }
当上面的代码被编译和执行时,它会产生下列结果:
78 48.005 2345.6789 True
Convert 函数
Convert
的成员函数 ToIntX
类函数能够把数字字符串转换成数字
string intstr = 456.ToString(); int data = Convert.ToInt16(intstr); Console.WriteLine(data);
int.Parse 函数
int.Parse
函数能够将包含数字的字符串转换为int类型,如果转换不成功则会抛出异常
string intstr = 456.ToString(); int data = int.Parse(intstr); Console.WriteLine(data);
int.TryParse(string s,out int i) 函数
int.TryParse
函数能够将包含数字的字符串转换为int类型,该方式比 int.Parse(string s) 的不同之处就是:它不会抛出异常,最后一个参数result是输出值,如果转换成功则输出相应的值,转换失败则输出0。
class test { static void Main(string[] args) { string s1="hello 简单编程"; string s2="4567"; int a,b; bool bo1=int.TryParse(s1,out a); Console.WriteLine(s1+" "+bo1+" "+a); bool bo2=int.TryParse(s2,out b); Console.WriteLine(s2+" "+bo2+" "+b); } }
结果输出:
hello 简单编程 False 0 4568 True 4567