C# 类型转换
2017-03-08 23:30
197 查看
类型转换从根本上说是类型铸造,或者说是把数据从一种类型转换为另一种类型。在 C# 中,类型铸造有两种形式:
- 隐式类型转换 - 这些转换是 C# 默认的以安全方式进行的转换, 不会导致数据丢失。例如,从小的整数类型转换为大的整数类型,从派生类转换为基类。
- 显式类型转换 - 显式类型转换,即强制类型转换。显式转换需要强制转换运算符,而且强制转换会造成数据丢失。
下面的实例显示了一个显式的类型转换:
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
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 把类型转换为 16 位无符号整数类型。 |
15 | ToUInt32 把类型转换为 32 位无符号整数类型。 |
16 | ToUInt64 把类型转换为 64 位无符号整数类型。 |
下面的实例把不同值的类型转换为字符串类型:
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
笔记列表
-
Jennis
jennistian@gmail.com
隐式转换和显式转换
隐式转换:C# 默认的以安全方式进行的转换。本质是从小存储容量数据类型自动转换为大存储容量数据类型,从派生类转换为基类。
实例:
namespace TypeConvertion { class Class1 { } class Class2 : Class1 //类Class2是类Class1的子类 { } class Program { static void Main(string[] args) { int inum = 100; long lnum = inum; // 进行了隐式转换,将 int 型(数据范围小)数据转换为了 long 型(数据范围大)的数据 Class1 c1 = new Class2(); // 这里也是隐式转换,将一个新建的 Class2 实例转换为了其基类 Class1 类型的实例 C1 } } }
显式转换:通过用户使用预定义的函数显式完成的,显式转换需要强制转换运算符。
转换类型的范围大小和从属关系和隐式转换相反。显式转换可能会导致数据出错,或者转换失败,甚至无法编译成功。
实例:
double dnum = 100.1; int ifromd = (int)dnum; //double类型显式转换转为int类型 Class1 c11 = new Class1(); Class2 c22 = c11 as Class2; //使用as进行显式转换 Console.WriteLine(c22 is Class1); Console.WriteLine(c22 is Class2);
运行结果:
FALSE FALSE
相关文章推荐
- C#与C++数据类型比较及结构体转换[整理]
- C# 任意类型转换成json (datable,list,array 等)
- C#学习笔记-数据类型转换
- C#控制台基础 int类型转换成string类型
- C#调用VC DLL接口函数参数类型转换方法介绍
- C#调用C++DLL 数据类型转换
- C#中的类型转换[转]
- C# 数组类型转换 int[] 转换string[]
- ASP.NET AJAX客户端编程之旅(三)——让JavaScript和C#无障碍沟通:数据类型自动转换&序列化
- c#调用Delphi DLL pchar类型的转换
- C#.NET 中的类型转换
- C# DataTable.Select()方法,条件中使用类型转换
- C#类型转换总结
- c#中的类型转换
- C#的类型转换
- ASP.NET AJAX客户端编程之旅(三)——让JavaScript和C#无障碍沟通:数据类型自动转换&序列化(转载)
- C# 将一个对象转换为指定类型
- C# winform关于datagridview中的列的数据类型转换问题
- c#入门之类型转换详解
- C#.NET 中的类型转换