zoukankan      html  css  js  c++  java
  • C#語法學習裝箱(box)和拆箱(unbox)

     




    /*
     * Created by SharpDevelop.
     * User: Administrator
     * Date: 2008/9/4
     * Time: 上午 12:10
     * 
     
    */

    using System;
    class Test
    {
        
    static void Main()
        {
            
    int i=123;//第一次裝箱
            object o=i;
            i
    =456;
            
    //這里由於使用了+號也就會調用字符串的
            
    //String.Concat(Object,Object,Object);
            
    //這也就讓下面的都需要轉換成Object類型
            Console.WriteLine(i //第二次裝箱
                              + ",  " +
                              (
    int)o);//這里先發生一次拆箱,再接著發生第三次裝箱
        }
    }
    //問題:上面的程序會進行幾次裝箱和拆箱.
    //3次裝箱,1次拆箱.
    //這里也就告訴我們在寫程序的時候不注意就進行裝箱和拆箱的操作
    //為了提高程序的性能我們可以裝輸出語句改為下面的:
    //Console.WriteLine(i + ", " + o);輸出結果一致.這時候進行了兩次裝箱
    //Console.WriteLine(i.ToString() + ", " + o);輸出結果一致.這時候進行了一次裝箱

    /*
     * Created by SharpDevelop.
     * User: Administrator
     * Date: 2008/9/4
     * Time: 上午 12:27
     * 裝箱和拆箱的性能問題:
     * Box 和 Unbox 處理是大量耗用運算資源的處理序。當實值型別經 Box 處理時,必須建立全新的物件。這個過程需要的時間可能是指派的 20 倍。執行 Unbox 處理時,轉換處理序所需的時間可能是指派的四倍。
     * 上面這句是MSDN的說法,因此在實際編程中我們要盡能避免裝箱和拆箱操作.
     
    */
    using System;
    using System.Collections;
    struct Person
    {
        
    private string _name;
        
    public Person(string name)
        {
            _name
    =name;
        }
        
    public string Name
        {
            
    get { return _name; }
            
    set { _name=value; }
        }
    }
    class Test
    {
        
    static void Main()
        {
            ArrayList arr
    =new ArrayList();
            Person p
    =new Person("張三");
            arr.Add(p);
    //把結構體裝放數組中的時候會進行裝箱操作
            p.Name="李四";
            Console.WriteLine(p.Name);
            Console.WriteLine(((Person)arr[
    0]).Name);
        }
    }

    申明

    非源创博文中的内容均收集自网上,若有侵权之处,请及时联络,我会在第一时间内删除.再次说声抱歉!!!

    博文欢迎转载,但请给出原文连接。

  • 相关阅读:
    (转) [组合数学] 第一类,第二类Stirling数,Bell数
    The Heaviest Non-decreasing Subsequence Problem
    高斯枚举自由元小板子 (待测试)
    gperftools::TCMalloc
    tinyxml2
    pugixml
    std::weak_ptr
    enable_shared_from_this
    mfc字符转码
    std::multiset
  • 原文地址:https://www.cnblogs.com/Athrun/p/1283630.html
Copyright © 2011-2022 走看看