object obj = 1;
decimal h1 = Decimal.Parse(obj.ToString()); --这两个转换有啥区别?
decimal h = (decimal) obj;--这两个转换有啥区别?

解决方案 »

  1.   

    object obj = 1;
    decimal h1 = Decimal.Parse(obj.ToString()); //这两个转换有啥区别?
    decimal h = (decimal) obj;//这两个转换有啥区别?
      

  2.   

    恩,按照我的意思来解释吧decimal h1 = Decimal.Parse(obj.ToString()); //这个应该叫“内容翻译”decimal h = (decimal) obj //这个才应该叫"类型转换"
      

  3.   

    decimal h1 = Decimal.Parse(obj.ToString()); //这个慢
    decimal h = (decimal) obj //这个快。 
      

  4.   

    object obj = 1; 
    decimal h1 = Decimal.Parse(obj.ToString());  
    decimal h = (decimal) obj; // 这个不会成功,将抛出异常
      

  5.   

    Decimal.Parse(obj.ToString());
    如果Null或非Decimal会报错
    (decimal) obj
    是强制类型转换
      

  6.   

    object obj = 1;
    decimal h1 = Decimal.Parse(obj.ToString()); //这个不会报错
    decimal h = (decimal) obj;//这个报错了//我不知道原因,所以来问了,说说区别
      

  7.   

    decimal h = (decimal)(int)obj;
      

  8.   

    object obj = 1; 
    decimal h1 = Decimal.Parse(obj.ToString()); // 将obj转换成字符串,然后将分析字符串描述对应的Decimal的值,逐个字符分析。decimal h = (decimal) obj; // 这是一个强制类型转换,引用型转换成数值型进行了拆箱操作两个都会抛出异常,但是抛出的异常类型不同。一个是溢出一个是无效操作(应该是这个)。
      

  9.   

    object obj = (short)1;
    decimal h = (decimal)(short)obj;
    object obj = (decimal)1;
    decimal h = (decimal)obj;
      

  10.   


    decimal类型与object类型存储地方不同,object属于引用类型,存储于堆上,decimal类型属于值类型,存储于堆栈中,这两种转换都是把obj进行拆箱并转成decimal值类型,只是方式不同而已
      

  11.   

    原因参照我在2楼的描述1个是翻译,翻译就是你可以 把  E文 “class” 翻译成 中文的“类”
     E文 “object” 翻译成 中文的“对象”也就是他是内容翻译过程而另一个则是转换,相当于功能转换。比如你可以可把茶壶直接当杯子用,这个没问题。但是你要把桌子当杯子用就有问题了
      

  12.   

    object obj = 1; 
    Console.WriteLine(obj.GetType()); // 输出 System.Int32
    decimal h1 = Decimal.Parse(obj.ToString()); // obj.ToString()是"1",decimal.Parse("1")没问题
    int h = (int)obj; // 这样可以,因为 obj 本质上是 int。
      

  13.   

    简单说两种使用情况的例子。如果是在文本框里实时接收数字, 并对这个数字进行计算, 只能用第一个方法。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());
      

  14.   

    呵呵,看了上面的回复,大部分人都被中文术语,技术点给误导了啥装箱、拆箱---诚然技术上他是装箱、拆箱。不过呢这个东西本质上与装箱、拆箱无关,不过是个技术实现
    来看看E文原始含义:简明英汉辞典:
    parse:vt.解析 n.分列看明白这个单词的意思没有,解析,分列。翻译。 (解析 包含有解析并转换的意思,但其核心的含义应该是解析,而非转换)