VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > temp > C#教程 >
  • c#语法学习之装箱box与拆箱unbox

制作者:剑锋冷月 单位:无忧统计网,www.51stat.net
 

C#语法学习装箱(box)和拆箱(unbox)

C#语法学习装箱(box)和拆箱(unbox)

C#语法学习装箱(box)和拆箱(unbox)

C#语法学习装箱(box)和拆箱(unbox)

C#语法学习装箱(box)和拆箱(unbox)

/*
*CreatedbySharpDevelop.
*User:Administrator
*Date:2008/9/4
*Time:上午12:10
*
*/
usingSystem;
classTest
{
  staticvoidMain()
  {
    inti=123;//第一次裝箱
    objecto=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);輸出結果一致.這時候進行了一次裝箱
  
/*
*CreatedbySharpDevelop.
*User:Administrator
*Date:2008/9/4
*Time:上午12:27

  *裝箱和拆箱的性能問題:

  *Box和Unbox處理是大量耗用咚阗Y源的處理序。當實值型別經Box處理時,必須建立全新的物件。這個過程需要的時間可能是指派的20倍。執行Unbox處理時,轉換處理序所需的時間可能是指派的四倍。

  *上面這句是MSDN的說法,因此在實際編程中我們要盡能避免裝箱和拆箱操作.

*/
usingSystem;
usingSystem.Collections;
structPerson
{
  privatestring_name;
  publicPerson(stringname)
  {
    _name=name;
  }
  publicstringName
  {
    get{return_name;}
    set{_name=value;}
  }
}
classTest
{
  staticvoidMain()
  {
    ArrayListarr=newArrayList();
    Personp=newPerson("張三");
    arr.Add(p);//把結構體裝放數組中的時候會進行裝箱操作
    p.Name="李四";
    Console.WriteLine(p.Name);
    Console.WriteLine(((Person)arr[0]).Name);
  }
}



相关教程