- ·上一篇内容:C# 操作符优先级表(从高到低)
- ·下一篇内容:《永不消逝的电波》剧情简介
C#数据类型的转换方法
C#中的数据类型有两种转换方式:隐式转换和显式转换,即强制转换,也可以用类型转换方法来进行命令式显式转换。
1)隐式转换
与C++一样,当转换不会造成信息丢失时,C# 一般会采用自动的隐式转换(implicit conversion)。隐式转换包括对数值、枚举和引用的隐式转换。隐式转换可以发生在方法调用、表达式计算和分配时。但是不存在到字符类型char的隐式转换。数值类型的隐式转换参见表17-8。
表17-8 隐式数值类型转换
被转换类型
|
可安全转换到的类型
|
sbyte
|
short、int、long、float、double、decimal
|
byte
|
short、ushort、int、uint、long、ulong、float、double、decimal
|
short
|
int、long、float、double、decimal
|
ushort
|
int、uint、long、ulong、float、double、decimal
|
int
|
long、float、double、decimal
|
uint
|
long、ulong、float、double、decimal
|
long
|
float、double、decimal
|
ulong
|
float、double、decimal
|
float
|
double
|
char
|
ushort、int、uint、long、ulong、float、double、decimal
|
2)显式转换
与C++一样,C# 中的显式转换(implicit conversion)也是指使用强制转换(cast)运算符“(类型)”进行的类型转换。如果显式转换位于“已检验”(checked)上下文内,在被转换的值超出目标类型的取值范围时,会导致OverflowException异常,这是C# 新增的观念。如果显式转换位于“未检验”(unchecked)上下文内,则不会抛出异常,但是转换行为会不明确也不可靠,这点与C++类似。表17-9列出了可以安全进行显式转换的类型。
表17-9 显式数值类型转换
被转换类型
|
可安全转换到的类型
|
sbyte
|
byte、ushort、uint、ulong、char
|
byte
|
sbyte、char
|
short
|
sbyte、byte、ushort、uint、ulong、char
|
ushort
|
sbyte、byte、short、char
|
int
|
sbyte、byte、short、ushort、uint、ulong、char
|
uint
|
sbyte、byte、short、ushort、char
|
long
|
sbyte、byte、short、ushort、int、uint、ulong、char
|
ulong
|
sbyte、byte、short、ushort、int、uint、long、char
|
float
|
sbyte、byte、short、ushort、int、uint、long、ulong、decimal、char
|
double
|
sbyte、byte、short、ushort、int、uint、long、ulong、float、decimal、char
|
decimal
|
sbyte、byte、short、ushort、int、uint、long、ulong、float、double、char
|
char
|
sbyte、byte、short
|
3)命令转换
除了上面所介绍的隐式和显式转换外,在C# 中还可以利用.NET的System.Convert类提供的一套公用静态的转换方法,来进行显式类型转换,参见表17-10。
表17-10 显式类型转换的静态方法
方法
|
功能
|
ToBoolean
|
将指定的值转换为等效的布尔值。
|
ToByte
|
将指定的值转换为8位无符号整数。
|
ToChar
|
将指定的值转换为Unicode字符。
|
ToDateTime
|
将指定的值转换为DateTime。
|
ToDecimal
|
将指定值转换为Decimal数字。
|
ToDouble
|
将指定的值转换为双精度浮点数字。
|
ToInt16
|
将指定的值转换为16位有符号整数。
|
ToInt32
|
将指定的值转换为32位有符号整数。
|
ToInt64
|
将指定的值转换为64位有符号整数。
|
ToSByte
|
将指定的值转换为8位有符号整数。
|
ToSingle
|
将指定的值转换为单精度浮点数字。
|
ToString
|
将指定值转换为其等效的String表示形式。
|
ToUInt16
|
将指定的值转换为16位无符号整数。
|
ToUInt32
|
将指定的值转换为32位无符号整数。
|
ToUInt64
|
将指定的值转换为64位无符号整数。
|
例如:
using System;
int i = 1234;
Conver.ToInt16(i);
本文源自:翔宇亭——IT乐园(http://www.biye5u.com),转载请保留此信息!
微信搜索“优雅的代码”关注本站的公众号,或直接使用微信扫描下面二维码关注本站公众号,以获取最新内容。
个人成长离不开各位的关注,你的关注就是我继续前行的动力。