视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
C#基础之数据类型转换
2020-11-27 22:41:39 责编:小采
文档


 

int x; long y = 1234567101112; x = (int)y; Console.WriteLine(x);

  输出结果:

  我们知道long类型的取值范围是-9223372036854775805~+9223372036854775807;int类型的是:-21474838~+21474837

上面的代码中,由于long变量的值超过了int能容纳的最大值,造成了数据的丢失;像这样有可能造成数据丢失或引发异常的任何转换都需要执行显式转换(explicit);

相反的就是执行隐式转换(implicit).

  用chencked检查上面的代码

从图得知上面的转换抛出了一个溢出异常,显式转换都可能不安全, (强扭的瓜就是不甜);但是如果

long的值在int的有效值范围内,这样是不会引发异常的.

  下面我们再来看个例子:

int i; double d = 6.88; i = (int)d; Console.WriteLine(i);

 

  输出结果:6

像这样发生精度丢失的我们可以把他叫做窄化转换,C#与C或C++不同,在C或C++中是可以直接将i=d的.C#的编译器告诉我们,如果接受精度损失,你就得用显式类型转换.

  为什么我们初始化float类型的时候数字的后面都要在数值后面加"F"; 因为C#认为像2.3这样的带小数点的常量是拥有更高精度的double类型,编译器将因为损失精度

而拒绝而执行。所以在给float赋值时要么显式的将常量转换成float的值,要么直接在常量的后面加"F"(小写的也可以).当然我们一般在处理浮点数的时候最好还是直接使用

double这样就能避免很多类型转换.

  现在我们换种方式:

像这样把低精度的值赋给高精度变量,我们就把他叫做宽化转换。

  下面来简单说说显式转换的一些:

   在值类型中,只能在数字、字符(char)、枚举(enum)中转换;

   不能把bool直接转换成其他类型,其他类型特不能直接转换成bool类型.

 第二部分:字符串与值类型的转换

  主要是用到: Parse(),Convert,ToString()

string =》值类型  :

string aa = "123"; int num = int.Parse(aa); double db = double.Parse(aa);

   当然parse方法还有很多重载方法,我就不一一列出来了

   Convert是不可扩展的,只支持预定义数量的类型;他允许从任何基本类型转换到其他的基本类型

string str = "true"; bool b = Convert.ToBoolean(str) ? bool.Parse(str) : false; Console.WriteLine(b);

  输出结果:True

  TryParse听说这个东西在1.0版本的时候只有double才有,从2.0才普及的;TryParse()用法也和Parse()方法差不多,只是他返回的是bool值,通过out把值赋给变量

他两的区别:TryParse转换失败不会引发异常,只会返回false;被转换的值是null,或者格式不对、溢出等等情况,

如果是数值类型out出来的值是0,如果是字符类型则是未定义的值,布尔的是false,....

string str1 = "abc",str2 = "123"; int a, b; int.TryParse(str1,out a); int.TryParse(str2,out b); Console.WriteLine(a); Console.WriteLine(b);

输出结果:  0 

     123

  值类型 =》string:

  最后就是tostring()方法,任何数据类型你都可以toString一下,而且toString()可以自己定义转换方法,tostring()是平时用的最多的了,这个就不多说了.

 ps:写的很乱,想到什么写什么,就当“散文”看吧 

下载本文
显示全文
专题