欢迎您访问我爱IT技术网,今天小编为你分享的编程技术是:【C#基础之数据类型转换】,下面是详细的讲解!
C#基础之数据类型转换
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:写的很乱,想到什么写什么,就当“散文”看吧
关于C#基础之数据类型转换的用户互动如下:
相关问题:C#数据类型转换的几种形式
答:(1) 隐式转换:一般是低类型向高类型转化,能够保证值不发生变化。 隐式数值C#数据类型转换: 从sbyte 到 short、int、long、float、double 或 decimal。 从byte 到 short、ushort、int、uint、long、ulong、float double 或 decimal。 从short ... >>详细
相关问题:C#怎么强制转换数据类型?
答:在C#中,任何数据都是对象,比如你打开Int32的引用,可以看见public override string ToString();这个方法,而ToString()正式调用的这个方法。这个方法在你继承的子类中可以被覆盖。所以,ToString()这个方法不是强制转换。 Convert是一个类型... >>详细
相关问题:c#数据类型转换
答:ok,你问题描述很不清晰,尤其是第一个场景,很混乱 不过如果只是类型转换的问题的话: 场景1. 假设count是int也就是int32 那么 转换成字符串 方法为 count.ToString(); 比如:Label1.Text=count.ToString(); 再从string到int32 就是count= Conv... >>详细
- 【asp】asp.net url重写浅谈-net-url重写
- 【DataSet】DataSet、DataTable、DataRow区别详解
- 【asp】asp.net 动态添加多个用户控件-net-动态添
- 【创建】ASP.NET Web API教程 创建域模型的方法详
- 【Asp】Asp.net 页面调用javascript变量的值-net-
- 【ASP】ASP.NET 5升级后如何删除旧版本的DNX-NET5
- 【404页面】ASP.NET设置404页面返回302HTTP状态码
- 【Visual】分享Visual Studio原生开发的10个调试
- 【全局】.net全局定时定期执行某些操作在Global.a
- 【asp】asp.net ubb使用代码-net-ubb使用
- 评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
-
