Hệ thống kiểu dữ liệu dùng chung

các tiêu chuẩn định nghĩa các kiểu dữ liệu và giá trị trong bộ nhớ máy tính

Trong .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

sửa
  • Để thiết lập một khuôn khổ cho phép tích hợp chéo giữa các ngôn ngữ, an toàn kiểu và thực thi code với hiệu năng cao.
  • Cung cấp một mô hình hướng đối tượng hỗ trợ hiện thực hóa các ngôn ngữ lập trình.
  • Xác định các quy tắc mà các ngôn ngữ phải tuân theo, để đảm bảo rằng các đối tượng được viết bằng các ngôn ngữ khác nhau vẫn có thể tương tác với nhau.
  • CTS cũng định nghĩa các quy tắc đảm bảo rằng các kiểu dữ liệu của các đối tượng được viết bằng các ngôn ngữ khác nhau có thể tương tác với nhau.
  • Chỉ rõ các quy tắc về khả năng hiển thị kiểu và quyền truy cập vào các thành viên của một kiểu, nghĩa là CTS thiết lập các quy tắc theo đó các phạm vi tạo thành phạm vi cho một loại, và Common Language Runtime thi hành các quy tắc hiển thị.
  • Định nghĩa các quy tắc điều khiển kế thừa kiểu, phương thức ảo và vòng đời của đối tượng.
  • Các ngôn ngữ được.NET hỗ trợ có thể hiện thực hóa tất cả các kiểu dữ liệu hoặc chỉ một số kiểu dữ liệu thông dụng...

Phân loại kiểu

sửa

Hệ thống kiểu dữ liệu dùng chung hỗ trợ hai loại loại chính:

Kiểu giá trị
Các loại giá trị trực tiếp chứa dữ liệu, và các instance của những kiểu này được phân bổ trên stack hoặc trong dòng cấu trúc. Các loại giá trị có thể là các kiểu đã được tích hợp, người dùng xác định, hoặc kiểu enum.
Kiểu tham chiếu
Các kiểu tham chiếu lưu một tham chiếu đến địa chỉ bộ nhớ của giá trị và được phân bổ trên heap. Các kiểu tham chiếu có thể là tự mô tả, kiểu con trỏ, hoặc các kiểu interface. Các kiểu tự mô tả được phân chia thành các mảng và các loại class. Các kiểu class là các lớp mà người dùng định nghĩa, các loại giá trị boxed, và các delegate.

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 SystemClass Class1    Public Value As Integer = 0End 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 MainEnd Class 'hết class Test

Output của đoạn code trên là:

Các giá trị: 0, 123Các tham chiếu: 123, 123

Boxing và unboxing

sửa

Boxing (đóng hộp)

sửa

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 địnhConsole.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 khaiConsole.WriteLine("Đối tượng o = {0}",o); // in ra dòng "Đối tượng o = 10"

Unboxing (mở hộp)

sửa

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 địnhx = (int) o1; // unboxing công khai

Đọc thêm

sửa

Tham khảo

sửa

Liên kết ngoài

sửa
🔥 Top keywords: 2112: Doraemon ra đời300 (phim)Anh hùng xạ điêu (phim truyền hình 2003)Bùng phát virus Zika 2015–2016Chuyên gia trang điểmCristiano RonaldoCá đuối quỷDanh sách Tổng thống Hoa KỳDanh sách câu thần chú trong Harry PotterDanh sách tài khoản Instagram có nhiều lượt theo dõi nhấtGiải Oscar cho phim ngắn hay nhấtHoan Ngu Ảnh ThịHầu tướcHọc thuyết tế bàoJason Miller (communications strategist)Lễ hội Chọi trâu Đồ SơnLộc Đỉnh ký (phim 1998)Natapohn TameeruksNinh (họ)Phim truyền hình Đài LoanRobloxThanh thiếu niênThần tượng teenThổ thần tập sựTrang ChínhTập hợp rỗngTỉnh của Thổ Nhĩ KỳVõ Thần Triệu Tử LongXXX (loạt phim)Âu Dương Chấn HoaĐào Trọng ThiĐại học Công giáo ParisĐệ Tứ Cộng hòa PhápĐổng Tiểu UyểnĐài Truyền hình Kỹ thuật số VTCTrang ChínhĐặc biệt:Tìm kiếmĐài Truyền hình Việt NamArya bàn bên thỉnh thoảng lại trêu ghẹo tôi bằng tiếng NgaViệt NamGiải vô địch bóng đá châu Âu 2024Ngày Độc lập Hoa KỳGiải vô địch bóng đá châu ÂuThích Minh TuệThanh gươm diệt quỷBảng xếp hạng bóng đá nam FIFAThích Chân QuangĐảng ủy Công an Trung ương (Việt Nam)Danh sách phim điện ảnh Thám tử lừng danh ConanAnh trai vượt ngàn chông gai (mùa 1)Đặc biệt:Thay đổi gần đâyCúp bóng đá Nam MỹTô LâmCửu Long Thành Trại: Vây thànhẤn ĐộBộ Công an (Việt Nam)MiduCristiano RonaldoLamine YamalTrần Hồng MinhẤm lên toàn cầuNguyễn Phú TrọngDanh sách tiểu bang Hoa Kỳ theo cách viết tắtHồ Chí MinhNam ThưCúp bóng đá Nam Mỹ 2024Lương Tam QuangHoa hậu Siêu quốc gia 2024Giải vô địch bóng đá châu Âu 2020Hoa KỳGiải bóng đá Cúp Quốc giaLoạn luânThành phố Hồ Chí Minh