C#基础之数据类型转换

所属分类: 网络编程 / ASP.NET 阅读数: 1289
收藏 0 赞 0 分享

 

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

  输出结果:

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

上面的代码中,由于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:写的很乱,想到什么写什么,就当“散文”看吧 

更多精彩内容其他人还在看

asp.net 页面间传值与跳转的区别

通过Server.Transfer("b.aspx") 与Response.Redirect("b.aspx")的区别
收藏 0 赞 0 分享

ASP.NET Gridview与checkbox全选、全不选实现代码

ASP.NET Gridview checkbox全选与全不选实现代码,其实原理就是利用js来实现的,但需要简单的设置下回传。
收藏 0 赞 0 分享

ASP.NET DropDownList控件的使用方法

ASP.NET DropDownList控件的使用方法,学习asp.net的朋友没用过这个控件的朋友可以参考下。
收藏 0 赞 0 分享

一些.NET对多线程异常处理技巧分享

多线程应用,在实际的项目或产品开发中,原则上来说,应该尽量避免,但是在强调用户体验的要求下或开发平台的限制下(如 Silverlight Socket 通讯),我们不得不用多线程。
收藏 0 赞 0 分享

ASP.NET MVC运行出现Uncaught TypeError: Cannot set property __MVC_FormValidation of null的解决方法

同一相站点,有些页面的客户端验证能工作,而有些死活不行。打开页面就出现Uncaught TypeError: Cannot set property __MVC_FormValidation of null错误
收藏 0 赞 0 分享

asp.net 通用分页显示辅助类(改进版)

在使用ASP.NET编程时,如果不用控件的默认分页功能,想自己搞一个,可以看看本文的asp.net通用分页显示辅助类哦。
收藏 0 赞 0 分享

微软 Visual Studio 2010官方下载地址给大家

昨天VS2010在网上报道都已经发布了,现在今天在网上找到Visual Studio 2010官方下载地址,提供给大家下载。
收藏 0 赞 0 分享

Javascript 直接调用服务器C#代码 ASP.NET Ajax实例

近来总有一些朋友会问到一些入门的问题,把这些问题整理一下,写出来。在以前的文章里,曾经利用纯JS编写过Ajax引擎,在真正开发的时候,大家都不喜欢以这种低效率的方式开发,利用MS Ajax的集成的引擎,可以简单不少工作。
收藏 0 赞 0 分享

ASP.NET 页面刷新的实现方法(包括html,js)

ASP.NET 页面刷新的实现方法,比较全了, 包括html与js下的实现方法。
收藏 0 赞 0 分享

asp.net 无刷新翻页就是这么简单

前两天看了一个自定义分页控件,和AspNetPager一样是实现IPostBackEventHandler接口,不过简洁许多,就想能不能实现ICallbackEventHandler接口做到无刷新分页呢?想到了就马上去做,终于,设想变成了现实!!
收藏 0 赞 0 分享
查看更多