Hệ thống kiểu dữ liệu dùng chungTrong .NET Framework của Microsoft, Hệ thống kiểu dữ liệu dùng chung (tiếng Anh: Common Type System - CTS) là một tiêu chuẩn xác định cách các định nghĩa kiểu dữ liệu và các giá trị cụ thể của các kiểu được thể hiện trong bộ nhớ máy tính. Nó giúp các chương trình viết bằng ngôn ngữ lập trình khác nhau dễ dàng chia sẻ thông tin. Các đặc điểm kỹ thuật của CTS được nhắc đến trong trong tiêu chuẩn Ecma 335. CLI và CTS được tạo ra bởi Microsoft, và .NET Framework là bản hiện thực hóa của tiêu chuẩn này. Chức năng hệ thống kiểu dữ liệu dùng chung
Phân loại kiểuHệ thống kiểu dữ liệu dùng chung hỗ trợ hai loại loại chính:
Ví dụ sau được viết bằng Visual Basic.NET cho thấy sự khác nhau giữa các kiểu tham chiếu và các kiểu giá trị: Imports System
Class Class1
Public Value As Integer = 0
End Class 'Class1
Class Test
Shared Sub Main()
Dim val1 As Integer = 0
Dim val2 As Integer = val1
val2 = 123
Dim ref1 As New Class1()
Dim ref2 As Class1 = ref1
ref2.Value = 123
Console.WriteLine("Các giá trị: {0}, {1}", val1, val2)
Console.WriteLine("Các tham chiếu: {0}, {1}", ref1.Value, ref2.Value)
End Sub 'hết hàm Main
End Class 'hết class Test
Output của đoạn code trên là: Các giá trị: 0, 123 Các tham chiếu: 123, 123 Boxing và unboxingBoxing (đóng hộp)Việc chuyển đổi các kiểu giá trị sang các kiểu tham chiếu được gọi là boxing (đóng hộp). Trong ví dụ dưới đây, không cần phải cho trình biên dịch biết một Int32 được đóng hộp vào một đối tượng, bởi vì nó tự có thể đóng hộp cho chính mình. Int32 x = 10;
object o = x; // boxing ngầm định
Console.WriteLine("Đối tượng o = {0}",o); // in ra dòng "Đối tượng o = 10"
Tuy nhiên, các giá trị Int32 cũng có thể được đóng hộp một cách công khai như sau: Int32 x = 10;
object o = (object) x; // boxing công khai
Console.WriteLine("Đối tượng o = {0}",o); // in ra dòng "Đối tượng o = 10"
Unboxing (mở hộp)Ví dụ sau hiển thị cách unbox một kiểu tham chiếu trở về một kiểu giá trị. Đầu tiên một giá trị Int32 được đóng hộp vào một đối tượng, và sau đó nó là mở hộp đối tượng đó để lấy lại giá trị. Lưu ý rằng việc mở hộp yêu cầu phải xác định rõ kiểu đích. Int32 x = 5;
object o1 = x; // boxing ngầm định
x = (int) o1; // unboxing công khai
Đọc thêmTham khảoLiên kết ngoàiInformation related to Hệ thống kiểu dữ liệu dùng chung |