类型转换之间的区别 object obj = 1;decimal h1 = Decimal.Parse(obj.ToString()); --这两个转换有啥区别?decimal h = (decimal) obj;--这两个转换有啥区别? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 object obj = 1;decimal h1 = Decimal.Parse(obj.ToString()); //这两个转换有啥区别?decimal h = (decimal) obj;//这两个转换有啥区别? 恩,按照我的意思来解释吧decimal h1 = Decimal.Parse(obj.ToString()); //这个应该叫“内容翻译”decimal h = (decimal) obj //这个才应该叫"类型转换" decimal h1 = Decimal.Parse(obj.ToString()); //这个慢decimal h = (decimal) obj //这个快。 object obj = 1; decimal h1 = Decimal.Parse(obj.ToString()); decimal h = (decimal) obj; // 这个不会成功,将抛出异常 Decimal.Parse(obj.ToString());如果Null或非Decimal会报错(decimal) obj是强制类型转换 object obj = 1;decimal h1 = Decimal.Parse(obj.ToString()); //这个不会报错decimal h = (decimal) obj;//这个报错了//我不知道原因,所以来问了,说说区别 decimal h = (decimal)(int)obj; object obj = 1; decimal h1 = Decimal.Parse(obj.ToString()); // 将obj转换成字符串,然后将分析字符串描述对应的Decimal的值,逐个字符分析。decimal h = (decimal) obj; // 这是一个强制类型转换,引用型转换成数值型进行了拆箱操作两个都会抛出异常,但是抛出的异常类型不同。一个是溢出一个是无效操作(应该是这个)。 object obj = (short)1;decimal h = (decimal)(short)obj;object obj = (decimal)1;decimal h = (decimal)obj; decimal类型与object类型存储地方不同,object属于引用类型,存储于堆上,decimal类型属于值类型,存储于堆栈中,这两种转换都是把obj进行拆箱并转成decimal值类型,只是方式不同而已 原因参照我在2楼的描述1个是翻译,翻译就是你可以 把 E文 “class” 翻译成 中文的“类” E文 “object” 翻译成 中文的“对象”也就是他是内容翻译过程而另一个则是转换,相当于功能转换。比如你可以可把茶壶直接当杯子用,这个没问题。但是你要把桌子当杯子用就有问题了 object obj = 1; Console.WriteLine(obj.GetType()); // 输出 System.Int32decimal h1 = Decimal.Parse(obj.ToString()); // obj.ToString()是"1",decimal.Parse("1")没问题int h = (int)obj; // 这样可以,因为 obj 本质上是 int。 简单说两种使用情况的例子。如果是在文本框里实时接收数字, 并对这个数字进行计算, 只能用第一个方法。Decimal d = Decimal.Parse(TextBox1.Text);如果你在之前已经定义Decimal并装箱, 想用最快的方式拆箱就用第二个方法Decimal d1 = 1.1;Object o = d;Decimal d2 = (Decimal)d1;这么写是不可取的, Parse方法目的不是让你拆箱。Decimal d = Decimal.Parse(o.ToString()); 呵呵,看了上面的回复,大部分人都被中文术语,技术点给误导了啥装箱、拆箱---诚然技术上他是装箱、拆箱。不过呢这个东西本质上与装箱、拆箱无关,不过是个技术实现来看看E文原始含义:简明英汉辞典:parse:vt.解析 n.分列看明白这个单词的意思没有,解析,分列。翻译。 (解析 包含有解析并转换的意思,但其核心的含义应该是解析,而非转换) C# 操作webbrowser FileVersionInfo.GetVersionInfo在Vista和Win7下是不是有问题!!?? TCP服务器怎么把一条消息发给指定的客户端? 终于被我遇到啦!好恐怖的问题! 如何用C#创建.dll程序? C# datagridview值改变问题 我晕!不知道我做错了什么!我的信誉分减了7分!郁闷! 服务器伪静态 中文搜索找不到怎么办 简单问题! 登录 注销 重新登录 换用户名? 不好意思,c[][]是什么意思?那c[,]又是什么意思呢? asp.net里怎么将图片转为Base64编码格式 散分题
decimal h1 = Decimal.Parse(obj.ToString()); //这两个转换有啥区别?
decimal h = (decimal) obj;//这两个转换有啥区别?
decimal h = (decimal) obj //这个快。
decimal h1 = Decimal.Parse(obj.ToString());
decimal h = (decimal) obj; // 这个不会成功,将抛出异常
如果Null或非Decimal会报错
(decimal) obj
是强制类型转换
decimal h1 = Decimal.Parse(obj.ToString()); //这个不会报错
decimal h = (decimal) obj;//这个报错了//我不知道原因,所以来问了,说说区别
decimal h1 = Decimal.Parse(obj.ToString()); // 将obj转换成字符串,然后将分析字符串描述对应的Decimal的值,逐个字符分析。decimal h = (decimal) obj; // 这是一个强制类型转换,引用型转换成数值型进行了拆箱操作两个都会抛出异常,但是抛出的异常类型不同。一个是溢出一个是无效操作(应该是这个)。
decimal h = (decimal)(short)obj;
object obj = (decimal)1;
decimal h = (decimal)obj;
decimal类型与object类型存储地方不同,object属于引用类型,存储于堆上,decimal类型属于值类型,存储于堆栈中,这两种转换都是把obj进行拆箱并转成decimal值类型,只是方式不同而已
E文 “object” 翻译成 中文的“对象”也就是他是内容翻译过程而另一个则是转换,相当于功能转换。比如你可以可把茶壶直接当杯子用,这个没问题。但是你要把桌子当杯子用就有问题了
Console.WriteLine(obj.GetType()); // 输出 System.Int32
decimal h1 = Decimal.Parse(obj.ToString()); // obj.ToString()是"1",decimal.Parse("1")没问题
int h = (int)obj; // 这样可以,因为 obj 本质上是 int。
Object o = d;
Decimal d2 = (Decimal)d1;这么写是不可取的, Parse方法目的不是让你拆箱。
Decimal d = Decimal.Parse(o.ToString());
来看看E文原始含义:简明英汉辞典:
parse:vt.解析 n.分列看明白这个单词的意思没有,解析,分列。翻译。 (解析 包含有解析并转换的意思,但其核心的含义应该是解析,而非转换)