值型別主要由兩類組成:
結構分為以下幾類:
bool
使用者定義的結構
在使用 c# 中的區域性變數之前,必須對其進行初始化。 例如,可能宣告未進行初始化的區域性變數,如以下示例所示:
int myint;
那麼在將其初始化之前,無法使用此變數。 可使用下列語句將其初始化:
myint = new int(); // invoke default constructor for int type.
此語句是下列語句的等效語句:
myint = 0; //
assign an initial value, 0
in this example.
當然,可以用同乙個語句進行宣告和初始化,如下面示例所示:
int myint = new
int();
//或int myint = 0;
使用 new 運算子時,將呼叫特定型別的預設建構函式並對變數賦以預設值。 在上例中,預設建構函式將值 0 賦給了 myint。
對於使用者定義的型別,使用 new 來呼叫預設建構函式。 例如,下列語句呼叫了 point 結構的預設建構函式:
point p = new point(); // invoke default constructor for the struct.
此呼叫後,該結構被認為已被明確賦值;也就是說該結構的所有成員均已初始化為各自的預設值。
乙個引用型別的變數不儲存它們所代表的實際資料,而是儲存對實際資料的引用(一般而言,引用會是資料儲存於儲存器或儲存裝置中的實體地址。)。
引用型別分兩步建立:首先在棧上建立乙個引用變數,然後在堆上建立物件本身,再把這個記憶體的控制代碼(也是記憶體的首位址)賦給引用變數。
首先來看一例程:
using system;
using system.collections.generic;
using system.linq;
using system.text;
namespace example
public
string carname
public
car( int carspeed, string carname)
}class program
", carspeed);
console.writeline("a.carspeed = ", a.carspeed);
console.writeline("b.carname = ", b.carname);
console.writeline("c.carname = ", c.carname);
while(true);}}
}
由例程可知:int carspeed = a.carspeed ; a.carspeed = 200,這條語句申請了乙個 int 型的變數 carspeed ,它在棧裡另開闢乙個位址,把值存在其中,當 a.carspeed 的值改變時不會影響 carspeed 的值。car c = b; b.carname = 「ferrari」;,這裡把 c 指向 b,也就是說兩者在棧中存的是同乙個引用,當 b.carname 改變時,c.carname 也會改變。
下面關鍵字用於宣告引用型別:
c# 也提供了下列內建應用型別:
C 值型別與引用型別
1.主要內容 型別的基本概念 值型別深入 引用型別深入 值型別與引用型別的比較及應用 2.基本概念 c 中,變數是值還是引用僅取決於其資料型別。c 的基本資料型別都以平台無關的方式來定義,c 的預定義型別並沒有內置於語言中,而是內置於.net framework中。net使用通用型別系統 cts 定...
c 引用型別與值型別
c 的值型別包括 結構體 數值型別,bool型,使用者定義的結構體 列舉,可空型別。c 的引用型別包括 陣列,使用者定義的類 介面 委託,object,字串。在c 中函式傳值的特點 1.對於複雜的資料型別,按引用傳遞的效率更高,因為在按值傳遞時,必須複製大量的資料 2.除非特別指定,所有的引用型別都...
C 值型別與引用型別
資料型別分為 值型別 引用型別 值型別 int char double bool 結構 struct 列舉 enum 儲存在堆疊中 引用型別 類 string。陣列 介面 儲存在託管堆中 2.值型別 變數儲存物件的值,賦值會建立值的副本,修改任何乙個副本,不會影響其他的 副本 int x 5 int...