C#語法學習類型(Type)


 
 
 
 
 
 
 
 
 
 
/*
 * Created by SharpDevelop.
 * User: Administrator
 * Date: 2008/9/3
 * Time: 下午 10:13
 * 本節講類型Type
 * 類型(Type)
 * C#中有兩种類型:
 * 值類型(value type)
 * 引用類型(reference type)
 * 值類型的變理直接包含它們的數據,而引用類型的變量存儲對它們的數據的引用,後者稱為對像.
 * 
 * 
 * C#的值類型進一步劃分為簡單類型(simple type),枚舉類型(enum type)和結構類型(struct type).
 * C#的引用類型進一步劃分為類類型(class type),接口類型(interface type),數組類型(array type)和委托類型(delegate type).
 * 
 * 
以下的例了介紹引用類型的存儲方式
 
*/
 
using System;
 
class MyClass
 {
     
public int i;
 }
 
class Test
 {
     
static void Main()
     {
         MyClass mc
=new MyClass();//mc存儲在堆中,而i則存儲在托管堆中.
         mc.i=100;
         MyClass mc1
=mc;//此時的mc1指向了mc的內存地址.
         mc1.i=200;//此時改變了托管堆中實例對像myclass的i的值為200,因此最後輸出結果都為200
         Console.WriteLine("mc.i=" + mc.i);
         Console.WriteLine(
"mc1.i=" + mc1.i);
     }
 }


/*
 * Created by SharpDevelop.
 * User: Administrator
 * Date: 2008/9/3
 * Time: 下午 10:13
 * 本節講類型Type
 * 以下的例子介紹值類型的存儲方式
 
*/
 
using System;
 
struct MyClass
 {
     
public int i;
 }
 
class Test
 {
     
static void Main()
     {
         MyClass mc
=new MyClass();//
         mc.i=100;
         MyClass mc1
=mc;//
         mc1.i=200;//
         Console.WriteLine("mc.i=" + mc.i);
         Console.WriteLine(
"mc1.i=" + mc1.i);
     }
 }


 
 值類型在復制的時候會創建副本,而引用類型則直接傳遞其引用地址.
什麼時候使用值類型
1,當類型是一個十分簡單的類型,其中沒有成員會修改類型的任何實例字段.
2,類型不需要從其他任何類型繼承.
3,類型不會派出其他任何類型.
4,類型的實例較小.
5,類型不作為方法參數傳遞,也不作為方法的返回類型使用.
posted @ 2008-09-03 22:53  Athrun  阅读(534)  评论(0编辑  收藏  举报