• Specified cast is not valid(C#) 引发的思考(装箱,拆箱本质)


        没有很华丽的语言,直接拿代码说事情把。

         

         这段代码,会报错吗?  结论:当然不会

         

        这段代码会报错了。原因是为啥? 这里面的水比较深。也要提醒各位写代码的适合要引起注意。异常:System.InvalidCastException: Specified cast is not valid.

        先来分析下为毛会报错。  我们知道,装箱操作,是可以把任意类型进行装箱操作的,但是我们是不是可以拆箱成我们需要的类型呢。

        var test=(long)obj; 编译器知道obj是object类型的对象。拆箱的时候,编译器生成一个拆箱的指令,假设这是一个拆箱的为int类型,然后将int

    类型转换为long类型的自定义指令序列。假设这是一个双重的相同的盒子,但是不同说明等等,对于所有内置整数的转换。这个代码将会非常大

    这个将是非常慢的。所以说,编译器在进行拆箱的时候,只能取消选中确切的类型。...

        要解决这个问题:采用Convert.ToInt64既可以解决。 这个convert.to方法为我们提供了快速精确或

    缓慢松懈的选择。

       关于这个问题解决办法也有了,但是问题的本质还是没有理解到位,请大牛们指点。

        

       

       

  • 相关阅读:
    HTML DOM-->内部样式表与外部样式表的读写
    HTML DOM-->行间样式表的读写
    HTML DOM-->获取文本节点
    HTML DOM-->获取属性节点
    HTML DOM-->获取标签(元素)节点
    HTML DOM-->简介
    JS 浏览器BOM-->setTimeout() 方法
    JS 浏览器BOM-->clearInterval() 方法
    JS 浏览器BOM-->setInterval() 方法
    JS 浏览器BOM-->onresize方法
  • 原文地址:https://www.cnblogs.com/gdouzz/p/6651169.html
Copyright © 2020-2023  润新知