Đang chuẩn bị nút TẢI XUỐNG, xin hãy chờ
Tải xuống
Trong ví dụ 8.6, giao diện IStorable có một phương thức Read() và môt thuộc tính là Status. Giao diện này được thực thi bởi một cấu trúc tên là myStruct: public struct myStruct : IStorable | Trong ví dụ 8.6 giao diện IStorable có một phương thức Read và môt thuộc tính là Status. Giao diện này được thực thi bởi một cấu trúc tên là myStruct public struct myStruct IStorable Đoạn mã nguồn thú vị bên trong Tester. Chúng ta bắt đầu bằng việc tạo một thể hiện của cấu trúc và khởi tạo thuộc tính là -1 sau đó giá trị của status được in ra 0 myStruct theStruct new myStruct theStruct.Status -1 khởi tạo Console.WriteLine theStruct.Status 0 theStruct.status Kết quả là giá trị của status được thiết lập theStruct.Status -1 Kế tiếp chúng ta truy cập thuộc tính để thay đổi status một lần nữa thông qua đối tượng giá trị thay đổi giá trị theStruct.Status 2 Console.WriteLine Changed object Console.WriteLine theStruct.Status 0 theStruct.Status kết quả chỉ ra sự thay đổi Changed object theStruct.Status 2 Tại điểm này chúng ta tạo ra một tham chiếu đến giao diện IStorable một đối tượng giá trị theStruct được boxing ngầm và gán lại cho tham chiếu giao diện. Sau đó chúng ta dùng giao diện để thay đổi giá trị của status bằng 4 gán cho một giao diện boxing ngầm định IStorable isTemp IStorable theStruct thiết lập giá trị thông qua tham chiếu giao diện isTemp.Status 4 Console.WriteLine Changed interface Console.WriteLine theStruct.Status 0 isTemp 1 theStruct. Status isTemp.Status như chúng ta đã thấy kết quả thực hiện có một điểm khác biệt Changed interface theStruct.Status 2 isTemp 4 Điều xảy ra là đối tượng được giao diện tham chiếu đến thay đổi giá trị status bằng 4 nhưng đối tượng giá trị cấu trúc không thay đổi.Thậm chí có nhiều thú vị hơn khi chúng ta truy cập phương thức thông qua bản thân đối tượng than đổi giá trị lần nữa theStruct.Status 6 Console.WriteLine Changed object Console.WriteLine theStruct.Status 0 isTemp 1 theStruct.Status isTemp.Status kết quả đối tượng giá trị thay đổi nhưng đối tượng được boxing và được giao diện tham chiếu không thay đổi Changed object theStruct.Status 6 isTemp 4 Ta thử xem đoạn mã IL để hiểu tham về cách thực hiện trên Ví dụ 8.7 MSIL phát