- 值類型
A,像int, float, char , double,bool等都是值類型
B,string, 自定義類等都是引用類型
它們的區別:源於復制策略的不同,
值類型直接包含值,換言之,變量引用的位置就是值在內存中實際存儲的位置。因此,將一個原始變量的值賦給另一個變量,會在新變量的位置創建原始變量的值的一個內存副本。兩個變量不可能引用同一個內存位置(除非其中一個或兩個都是out或ref參數;根據定義,這種參數是另一個變量的別名),更改原始變量的值不會影響另一個變量的值,變量各有各的存儲位置。因此,改變一個值類型變量的值不會影響其他任何值類型的值。

2.引用類型
對於引用類型的變量,它的值是對一個對象實例的引用,引用類型的變量存儲的是引用(通常是內存地址),要去那個位置找到對象實例的數據。

- 自定義值類型的重要性
兩種自定義值類型
A, 結構體(struct),B,枚舉(enum)
聲明結構
//use keword struct to declare a value type
struct Angle
{
public Angle(int degrees,int minutes,int seconds)
{
_Degrees = degrees;
_Minutes = minutes;
_Seconds = seconds;
}
public int Degrees
{
get{ return _Degrees; }
}
private int _Degrees;
public int Minutes
{
get{ return _Minutes;}
}
private int _Minutes;
public int Seconds
{
get{ return _Seconds;}
}
private int _Seconds;
public Angle Move(int degrees, int minutes, int seconds)
{
return new Angle(
Degrees + degrees,
Minutes + minutes,
Seconds + seconds
)
}
}
