C#中数据类型的转换介绍
目录
- 1、parse转换:将string类型转化为其他类型
- 2、任意类型转化为string类型
- 3、隐式转换:自动转换-->小范围到大范围自动转换
- 4、显示转换:强制转换-->由大范围到小范围的强制转换,不过可能会发生精度丢失
- 5、最后再给一个简单的题目考考大家:
今天学习了一下数据类型的转换,我整理出了一下笔记;
1、parse转换:将string类型转化为其他类型
//数据类型的转换 //即string"18"==> int 18, //1、parse转换:将string类型转化为其他类型 //待转数据必须要像该数据类型 string strNumber = "18"; int num01 = int.Parse(strNumber); float num02 = float.Parse(strNumber);
2、任意类型转化为string类型
//2、任意类型转化为string类型 int number = 18; string str = number.ToString();
昨天在做老师的练习的时候,就用到了这两种类型的转换,比如想把char类型转换成为int类型,可以先把它转化为string类型,再把string类型转化为int类型从而实现数据的转换,最稳健的做法,string类是充当了一个类似与“容器”的作用。
3、隐式转换:自动转换-->小范围到大范围自动转换
//3、隐式转换:自动转换-->小范围到大范围自动转换 byte b3 = 100; int i3 = b3;
这个没什么可说,很好理解,可以把b3变量看成一块“地”,存了100,byte是占一个字节,而int占4个字节,如果一个数据放在一个内存小的地方都放得下,那内存大的地方也能放下。
4、显示转换:强制转换-->由大范围到小范围的强制转换,不过可能会发生精度丢失
//4、显示转换:强制转换-->由大范围到小范围的强制转换,可能会发生精度丢失 int i4 = 100; byte b4 = (byte)i4;
这个强制转换就厉害了,不过语法也很简单,给大家看我输入的几个例子就明白为什么简单了
byte numbe1 = 1; short numbe2 = 2; short resu =numbe1 + numbe2;
这里的第三行报错,
这里我们要仔细阅读错误,无法将int类型隐式转换成short,就说明我们这个resu变量应该为int类型,或者用强制转换。(如果把第三行的short换成byte,一样的解决方式)
byte numbe1 = 1; short numbe2 = 2; short resu = (short)(numbe1 + numbe2); //或int resu =numbe1 + numbe2;
byte numbe1 = 1; byte numbe2 = 2; byte resu = (byte)(numbe1 + numbe2); //或int resu =numbe1 + numbe2;
在强制转换中出现这种无法隐式转换类型的错误时,看错误提示就行,很简单。
不过我在尝试其他类型的时候,却发现了一个不一样的错误。
float类型和decimal类型竟然不能相加?
查阅资料后发现原来它们两在内存里面存储的结构就不一样,float浮点型是近似存储(包括double),而decimal是精确存储,所以无法相加。(祖师爷告诉我的....)。
不过float与double类型可以相加
float numbe1 = 1; double numbe2 = 2; byte resu = (byte)(numbe1 + numbe2); //或double resu = numbe1 + numbe2;
可以理解为由多种变量参与运算,结果自动向较大的类型提升。
5、最后再给一个简单的题目考考大家:
代码中的b+=3和b=b+3,这两种写法完全一样的吗?
int a = 1; a = a + 3; a += 3; byte b = 1; b += 3; b = b + 3;
答案是不一样的,会报错,因为类型提升为int了。
加一个强制转换,就解决了。
为什么b+=3不报错呢?
+=属于快捷运算符,不做自动类型提升。不过如果初始b值过大,超出范围255,会从头开始,即从0开始,
到此这篇关于C#中数据类型的转换介绍的文章就介绍到这了,更多相关C#数据类型转换内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!