Tìm hiểu về Common Type System (CTS) trong .NET Framework


Common Type System là một phần nền tảng của .NET Framework’s Common Language Runtime (CLR). Nó định nghĩa các kiểu dữ liệu cơ bản để các ngôn ngữ khác nhau như VB.NET và C# có thể cùng sử dụng qua lại các kiểu dữ liệu.

Thành phần của CTS gồm có kiểu tham chiếu (reference) và kiểu giá trị (value). Chú ý là tất cả các kiểu dữ liệu này đều được thừa hưởng từ lớp đối tượng cơ sở Object.

Kiểu tham chiếu gồm có các kiểu: Class, Interface, Array, String và Delegate. Kiểu giá trị thì gồm các kiểu còn lại như: byte, int, char, structure…

Hình minh họa các kiểu dữ liệu của CTS:
chappell5fig01[1]

Sự khác nhau của kiểu tham chiếu và kiểu giá trị của CTS là mỗi loại được định vị trong bộ nhớ như thế nào. Trong managed code (chưa hiểu lắm về từ này), giá trị có thể được xác định trong bộ nhớ trên một stack được quản lí bởi CLR hoặc một heap. Các biến mà được xác định trên stack được tạo ra khi hàm chứa nó được gọi hoặc khi chương trình chạy tạo ra, và được giải phóng một cách tự động khi hàm kết thúc. Còn các biến xác định trên heap thì không thể tự được giải phóng mà phải được một tiến trình gọi là garbage collector giải phóng.

Hình minh họa:
chappell5fig02[1]

Có trường hợp mà một thể hiện của một kiểu giá trị cần được chuyển sang kiểu tham chiếu. Trong trường hợp này thì kiểu giá trị có thể được chuyển về kiểu tham chiếu qua một quá trình gọi là boxing. Khi một kiểu quá trị được boxed, một vùng lưu trữ được xác định trên heap và giá trị của thể hiện (instance) đó được copy sang qua heap. Tham chiếu đến vùng này được đặt trên stack. Một boxed value là một đối tượng. và có thể được chuyển đổi về kiểu ban đầu bằng một quá trình gọi là unboxing.

Tác giả: xuanchien

Tran Xuan Chien. Japan Advanced Institute of Science and Technology - Japan. Senior Developer - NUS Technology.

1 thought on “Tìm hiểu về Common Type System (CTS) trong .NET Framework”

Gửi phản hồi

Mời bạn điền thông tin vào ô dưới đây hoặc kích vào một biểu tượng để đăng nhập:

WordPress.com Logo

Bạn đang bình luận bằng tài khoản WordPress.com Log Out / Thay đổi )

Twitter picture

Bạn đang bình luận bằng tài khoản Twitter Log Out / Thay đổi )

Facebook photo

Bạn đang bình luận bằng tài khoản Facebook Log Out / Thay đổi )

Google+ photo

Bạn đang bình luận bằng tài khoản Google+ Log Out / Thay đổi )

Connecting to %s