Drupal Consultant
Started my career as a drupal8 developer in EM Solutions . I love learning Web technologies like HTML, CSS, PHP, Jquery Ajax and Drupal backend . Currently working as a drupal backend developer.
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:
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.
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.