複製鏈接
請複製以下鏈接發送給好友

值類型

鎖定
值類型這個概念經常出現在類似C#,JAVA等編程語言的書籍中."值類型"直接將內存存儲在棧內,由系統自動釋放資源的數據類型.
與值類型相對應的有引用類型.C#語言中還對應指針類型.
中文名
值類型
所屬學科
計算機

值類型編程類型

每一種編程語言的值類型都有一些非常細小的不同.下文所指的內容僅僅是.NET框架中C#編程語言的值類型定義.
整體來説C#的值類型有: [1] 
整型:Int;
長整型:long;
浮點型:float;
字符型:char;
布爾型:bool;
枚舉:enum;
結構:struct;
在C#中所有的值類型都繼承自:System.ValueType

值類型主要功能

基於值類型的變量直接包含值。 [2]  將一個值類型變量賦給另一個值類型變量時,將複製包含的值。這與引用類型變量的賦值不同,引用類型變量的賦值只複製對對象的引用,而不復制對象本身。
所有的值類型均隱式派生自SystemValueType。
引用類型不同,不能從值類型派生出新的類型。但與引用類型相同的是,結構也可以實現接口。
與引用類型不同,值類型無法包含null值。但是,可以為 null 的類型功能允許值類型分配給null。
每種值類型均有一個隱式的默認構造函數來初始化該類型的默認值。

值類型中值類型

在使用 C# 中的局部變量之前,必須對其進行初始化。例如,可能聲明未進行初始化的局部變量,如以下示例所示: [3] 
int myInt;
那麼在將其初始化之前,無法使用此變量。可使用下列語句將其初始化:
myInt = new int();
此語句是下列語句的等效語句:
myInt = 0;
當然,可以用同一個語句進行聲明和初始化,如下面示例所示:
int myInt = new int();
- 或 -
int myInt = 0;
使用new運算符時,將調用特定類型的默認構造函數並對變量賦以默認值。在上例中,默認構造函數將值0賦給了myInt。
對於用户定義的類型,使用new來調用默認構造函數。例如,下列語句調用了Point結構的默認構造函數:
Point p = new Point();
此調用後,該結構被認為已被明確賦值;也就是説該結構的所有成員均已初始化為各自的默認值。
參考資料
  • 1.    (美)內格爾(Nagel.C),等.C#高級編程(Professional C# 4.0 and .NET 4).美國:清華大學出版社,2010 年11月:章節1.3.2
  • 2.    微軟MSDN對於值類型功能的簡介  .微軟MSDN[引用日期2014-05-23]
  • 3.    (美)Karli Watson Christian Nagel.C#入門經典(Beginning Visual C# 2005):清華大學出版社,2006 年5月: 33頁