C# - Value 與 Reference Type

  1. 所有變數都是被存取在記憶體裡面。
  2. 根據存取變數的方式與使用方式不同可分三種型別:
  • Value Type 實質型別
  • Reference Type 參考型別
  • Pointer Type 指標型別

Value Type 實質型別

int (整數)」就是一種 Value Type。會在記憶體裡佔據一個空間,並且標記為變數名稱,並且把指定的數值存在這個空間裡面。

1
2
3
int a = 10
int b = a; // a =10, b =10
b = 30 // a=10 ,b = 30

Reference Type 參考型別

  1. Class 是一種 Reference Type,宣告 Reference Type 的變數時,也會在記憶體裡尋找一個空間,標記為變數名稱。
  2. 物件要透過 new() 關鍵字建立,才能讓變數有所參照指向。沒有指向任何物件的變數,初始存放的是 null
  3. 物件是存在稱為「堆疊(Heap)」的特殊記憶體區塊
  4. 若宣告一個 Reference Type 的變數等於另一個Reference Type 的變數,會使得前一個變數參照後一個變數指向的堆疊區塊
1
2
3
4
5
6
7
8
9
10
class Student
{
public int StudentID;
public string Name;
public int Grade;
public string Say()
{
return "我叫" + Name + ", 我是" + Grade + "年級的學生";
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
private void button1_Click(object sender, EventArgs e)
{
Student s1 = new Student();
s1.Name = "小山";
s1.Grade = 3;

Student s2 = s1;
s2.Name = "小羊";
s2.Grade = 2;

Student s4 = s2;
s4.Name = "元整";
s4.Grade = 1;

MessageBox.Show(s4.Say()); //"我叫元整, 我是1年級的學生";

}

Powered by Hexo and Hexo-theme-hiker

Copyright © 2013 - 2020 CYC'S BLOG All Rights Reserved.

UV : | PV :