![](https://www.cnblogs.com/images/cnblogs_com/athrun/82556/o_type.jpg)
![](https://www.cnblogs.com/images/cnblogs_com/athrun/82556/o_type01.jpg)
![](https://www.cnblogs.com/images/cnblogs_com/athrun/82556/o_type02.jpg)
![](https://www.cnblogs.com/images/cnblogs_com/athrun/82556/o_type04.jpg)
![](https://www.cnblogs.com/images/cnblogs_com/athrun/82556/o_type05.jpg)
![](https://www.cnblogs.com/images/cnblogs_com/athrun/82556/o_type06.jpg)
![](https://www.cnblogs.com/images/cnblogs_com/athrun/82556/o_type07.jpg)
![](https://www.cnblogs.com/images/cnblogs_com/athrun/82556/o_type08.jpg)
* 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);
}
}
* 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,類型不作為方法參數傳遞,也不作為方法的返回類型使用.