- 积分
- 40165
- 好友
- 记录
- 主题
- 帖子
- 听众
- 收听
|
[C#基语法]之C#类型转换
系列文章导航
[C#基语法]苏飞传奇版 http://www.sufeinet.com/thread-3091-1-1.html
类型转换的分类
C#有两种转换数据类型的方式:隐式转换方式和显式转换方式
1.隐式转换方式
我们经常需要把一个数据从一种类型转换为另一种类型,这就是类型转换
比如如下代码
[C#] 纯文本查看 复制代码
byte b = 25;
byte a = 8;
byte sum;
sum = a + b;
如果在编译器里一定会会产生一个错误
Cannot implicitly convert type 'int' to 'byte' (不能把int隐式转换为byte类型)
原因是我们把两个Byte类型数据相加在一起时,会返回一个int类型的结果,而不是一个byte类型结果
这是因为byte中只能存储8位数据,所以把两个Byte相加就可能出现起出8位的数据,所以会出错。
如果我们把sum 的类型换成int就不会出现问题了
[C#] 纯文本查看 复制代码 byte b = 25;
byte a = 8;
int sum;
sum = a + b;
下面我提供一个可以隐式转换类型的表格大家做为参考吧
源类型 | 目的类型 | 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,ulong | float,double,decimal | float | double
| char | ushort,int,uint,long,ulong,float,double,decimal |
以上表格是可以从源类型隐式转换为目的类型的类型,
只要上面表格里面的都不需要显式的都转换类型。
net会自动转换并不会出错。
2.显式转换方式
显式转换,也可以叫做强制转换,因为在显式转换过程中是很有可能出错的。
一般语法如下
[C#] 纯文本查看 复制代码 long b = 25;
int a = (int)b;
这是把目的类型放在前面的小括号里面。
在显式的数据类型转换时很有可能出产生溢出比如
[C#] 纯文本查看 复制代码 long b = 3000000000;
int a = (int)b;
大家想一下会输出什么,
错误
3000000000
答案是:大家可以动手试试
再看如下代码
[C#] 纯文本查看 复制代码 try
{
long b = 3000000000;
int a = checked((int)b);
}
catch (Exception)
{
throw;
}
其实在转换之前可以使用checked关键字来验证一下是否安全,
checked关键字可以检查数据类型的转换是否安全
运行如上代码会出现如下异常还有一种情况是数据丢失
比如- // 第一种情况
- double b = 10.1;
- int a = (int)(b + 0.5);
- //第二种情况
- double b = 10.1;
- int a = (int)(b);
复制代码 想一下如上两种情况会输出什么
答案如下便是10,也就是说他会取一个最小的整数,而不会进行四舍五入,更不会有小数位,因为目标类型是int类型
这点大家一种要注意,如数字比较精确的地方一定不要使用哦
ASCII转换- int b = 88;
- char a = (char)(b);
复制代码 上面代码会转出一个大写的X
也就是说int类型要可以直接通过char来转换为ASCII对应的字符
下面咱们再看一种Parse方法的方式- string b = "105";
- int a = int.Parse(b);
- string b = "105.5";
- int a = int.Parse(b);
复制代码 看看上面会输出什么,
答案是第二个会报错,在这种情况下是不会进行最小整数的,这点大家也要注意
对于Object类型我不得不提一下Tostring()方法了
所有的Object类型基本上都有一个toString()方法,这是系统重载过的,可以直接把类型转成String类型非常 方法比如
[C#] 纯文本查看 复制代码 int b = "105.5";
string a = b.ToString();
好了最后咱们一起来看一下Convert方法吧。相信这个大家一定都非常的熟悉了,我先提供一下这个类签名给大家看
convert.txt
(161.22 KB, 下载次数: 714)
|
|