首页 > 编程 > C# > 正文

C#数据类型的转换方法

2023-05-08 19:02:31
字体:
来源:转载
供稿:网友

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);
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表