1.值類型(ValueType)
值類型包括:數(shù)值類型,結構體,bool型,用戶定義的結構體,枚舉,可空類型。
值類型的變量直接存儲數(shù)據(jù),分配在托管棧中。變量會在創(chuàng)建它們的方法返回時自動釋放,例如在一個方法中聲明Char型的變量name=’C’,當實例化它的方法結束時,name變量在棧上占用的內存就會自動釋放
C#的所有值類型均隱式派生自System.ValueType。
結構體:struct(直接派生于System.ValueType)。
數(shù)值類型:整型,sbyte(System.SByte的別 名),short(System.Int16),int(System.Int32),long(System.Int64),byte(System.Byte),ushort(System.UInt16),uint(System.UInt32),ulong(System.UInt64),char(System.Char)。
浮點型:float(System.Single),double(System.Double)。
財務計算的高精度decimal型:decimal(System.Decimal)。
bool型:bool(System.Boolean的別名)。
用戶定義的結構體(派生于System.ValueType)。
枚舉:enum(派生于System.Enum)。
可空類型(派生于System.Nullable<T>泛型結構體,T?實際上是System.Nullable<T>的別名
2.引用類型(ReferenceType)
引用類型包括:數(shù)組,用戶定義的類、接口、委托,object,字符串,null類型,類。
引用類型的變量持有的是數(shù)據(jù)的引用,數(shù)據(jù)存儲在數(shù)據(jù)堆,分配在托管堆中,變量并不會在創(chuàng)建它們的方法結束時釋放內存,它們所占用的內存會被CLR中的垃圾回收機制釋放。
數(shù)組(派生于System.Array)
用戶需定義以下類型:
類:class(派生于System.Object);
接口:interface(接口不是一個“東西”,所以不存在派生于何處的問題。接口只是表示一種contract約定[contract])。
委托:delegate(派生于System.Delegate)。
object(System.Object的別名);
字符串:string(System.String的別名)。



