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);
        }
    }

    申明

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

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

  • 相关阅读:
    二、java基本语法
    LINQ入门教程之各种标准查询操作符(一)
    LINQ入门教程之各种标准查询操作符(二)
    读《穷爸爸 富爸爸》有想
    考考你的逻辑推理能力
    读《自控力》有感
    读大数据有感
    django.core.exceptions.AppRegistryNotReady: Models aren't loaded yet.的解决办法
    RabbitMQ入门
    ubuntu安装mysql可视化工具MySQL-workbench及简单操作
  • 原文地址:https://www.cnblogs.com/Athrun/p/1283630.html
Copyright © 2011-2022 走看看