- Sơ đồ cỳ phỏp
5.1 Kiểudữliệu giá trị và kiểu dữliệu tham chiếu
C# phõn tập hợp kiểu dữ liệu thành hai loại: Kiểu dữ liệu giỏ trị (value) và kiểu dữ liệu tham chiếu (reference). Việc phõn chia này do sự khỏc nhau khi lưu kiểu dữ liệu giỏ trị và kiểu dữ liệu tham chiếu trong bộ nhớ. Đối với một kiểu dữ liệu giỏ trị thỡ sẽ được lưu giữ kớch thước thật trong bộ nhớ đó cấp phỏt là stack. Trong khi đú thỡ địa chỉ của kiểu dữ liệu tham chiếu thỡ được lưu trong stack nhưng đối tượng thật sự thỡ lưu trong bộ nhớ heap.
Ghi chỳ:
Tất cả cỏc kiểu dữ liệu xõy dựng sẵn là kiểu dữ liệu giỏ trị ngoại trừ cỏc đối tượng và chuỗi. Và tất cả cỏc kiểu do người dựng định nghĩa ngoại trừ kiểu cấu trỳc đều là kiểu dữ liệu tham chiếu.
Stack là một cấu trỳc dữ liệu lưu trữ thụng tin dạng xếp chồng tức là vào sau ra trước (Last In First Out : LIFO), điều này giống như chỳng ta cú một chồng cỏc đĩa, ta cứ xếp cỏc đĩa vào chồng và khi lấy ra thỡ đĩa nào nằm trờn cựng sẽ được lập ra trước, tức là đĩa vào sau sẽ được lấy ra trước.
Trong C#, kiểu giỏ trị như kiểu số nguyờn được cấp phỏt trờn stack, đõy là vựng nhớ được thiết lập để lưu cỏc giỏ trị, và vựng nhớ này được tham chiếu bởi tờn của biến.
Kiểu tham chiếu như cỏc đối tượng thỡ được cấp phỏt trờn heap. Khi một đối tượng được cấp phỏt trờn heap thỡ địa chỉ của nú được trả về, và địa chỉ này được gỏn đến một tham chiếu.
Thỉnh thoảng cơ chế thu gom sẽ hũy đối tượng trong stack sau khi một vựng trong stack được đỏnh dấu là kết thỳc. Thụng thường một vựng trong stack được định nghĩa bởi một hàm. Do đú, nếu chỳng ta khai bỏo một biến cục bộ trong một hàm là một đối tượng thỡ đối tượng này sẽ đỏnh dấu để hũy khi kết thỳc hàm. Những đối tượng trờn heap sẽ được thu gom sau khi một tham chiếu cuối cựng đến đối tượng đú được gọi.