zoukankan      html  css  js  c++  java
  • 拆箱存在的隐患

    static void Main(string[] args)
    {
    Int32 i
    = 10; object obj = new object(); //装箱操作,通常没有异常 try { obj = i; Console.WriteLine("装箱成功!"); } catch (Exception ex) { Console.WriteLine("装箱失败:"+ex.Message); return; } //拆箱操作,易产生隐患 try { Int64 j = (Int64)obj; Console.WriteLine("拆箱成功!"); } catch (Exception ex) { Console.WriteLine("拆箱失败:"+ex.ToString()); } Console.Read(); }

    分析:程序会抛出InvalidCastException类型的异常,这个异常的含义是无效类型转换或是显式转换引发异常。这说明该异常是因被拆箱对象的最初类型与拆箱时的值类型不一致而产生的。同时也论证了拆箱时的一条原则:被拆箱对象的最初类型与拆箱时的值类型必须一致!

    解决:

    try
    {
    Int64 j = (Int64)(Int32)obj;
    Console.WriteLine("拆箱成功!");
    }
    catch (Exception ex)
    {
    Console.WriteLine("拆箱失败:"+ex.ToString());
    }

    技巧:装箱和拆箱操作会影响系统性能。并且拆箱操作容易产生隐患,所以建议在可以确定值类型的情况下,应该尽可能的使用泛型技术来处理,这样可以避免大量地使用拆箱和装箱操作。

    ——当我们面对枯燥窘迫甚至是痛苦的生活时,只是缺少了提枪上阵去干他娘的勇气!
  • 相关阅读:
    idea 配置 maven 项目
    idea 配置普通web项目
    idea java.lang.OutOfMemoryError: PermGen space
    idea checkout 项目
    物理机自动化装机实现
    prometheus node_exporter相关监控指标
    nginx Linux内核参数的优化
    《高性能 Go 代码工坊》中译
    docker仓库资源的地址修改
    influxdb-1.7.8(centos 7) 部署
  • 原文地址:https://www.cnblogs.com/vakeynb/p/4009673.html
Copyright © 2011-2022 走看看