TAILIEUCHUNG - THỰC THI GIAO DIỆN phần 3

Biểu thức điều kiện sẽ trả về giá trị true và phép gán sẽ được thực hiện khi đối tượng có thực thi giao diện bên phải của toán tử is. Tuy nhiên, việc sử dụng toán tử is đưa ra một việc không có hiệu quả. Để hiểu được điều này, chúng ta xem đoạn chương trình được biên dịch ra mã IL. | Biểu thức điều kiện sẽ trả về giá trị true và phép gán sẽ được thực hiện khi đối tượng có thực thi giao diện bên phải của toán tử is. Tuy nhiên việc sử dụng toán tử is đưa ra một việc không có hiệu quả. Để hiểu được điều này chúng ta xem đoạn chương trình được biên dịch ra mã IL. Ở đây sẽ có một ngoại lệ nhỏ các dòng bên dưới là sử dụng hệ thập lục phân IL_0023 isinst ICompressible IL 0028 IL 0039 IL_002a IL_002b castclass ICompressible IL_0030 IL_0031 IL_0032 callvirt IL_0037 IL_0039 ldstr instance void ICompressible Compress IL_0043 Compressible not supported Điều quan trọng xảy ra là khi phép kiểm tra ICompressible ở dòng 23. Từ khóa isinst là mã MSIL tương ứng với toán tử is. Nếu việc kiểm tra đối tượng doc đúng kiểu của kiểu bên phải. Thì chương trình sẽ chuyển đến dòng lệnh 2b để thực hiện tiếp và castclass được gọi. Điều không may là castcall cũng kiểm tra kiểu của đối tượng. Do đó việc kiểm tra sẽ được thực hiện hai lần. Giải pháp hiệu quả hơn là việc sử dụng toán tử as. Toán tử as Toán tử as kết hợp toán tử is và phép gán bằng cách đầu tiên kiểm tra hợp lệ phép gán kiểm tra toán tử is trả về true rồi sau đó phép gán được thực hiện. Nếu phép gán không hợp lệ khi phép gán trả ề giá trị false thì toán tử as trả về giá trị null. Ghi chú Từ khóa null thể hiện một tham chiếu không tham chiếu đến đâu cả null reference . Đối tượng có giá trị null tức là không tham chiếu đến bất kỳ đối tượng nào. Sử dụng toán tử as để loại bỏ việc thực hiện các xử lý ngoại lệ. Đồng thời cũng né tránh việc thực hiện kiểm tra dư thừa hai lần. Do vậy việc sử dụng tối ưu của phép gán cho giao diện là sử dụng as. Cú pháp sử dụng toán tử as như sau biểu thức as kiểu dữ liệu Đoạn chương trình sau thay thế việc sử dụng toán tử is bằng toán tử as và sau đó thực hiện việc kiểm tra xem giao diện được gán có null hay không static void Main Document doc new Document Test Document IStorable isDoc doc as IStorable if isDoc null else .

TAILIEUCHUNG - Chia sẻ tài liệu không giới hạn
Địa chỉ : 444 Hoang Hoa Tham, Hanoi, Viet Nam
Website : tailieuchung.com
Email : tailieuchung20@gmail.com
Tailieuchung.com là thư viện tài liệu trực tuyến, nơi chia sẽ trao đổi hàng triệu tài liệu như luận văn đồ án, sách, giáo trình, đề thi.
Chúng tôi không chịu trách nhiệm liên quan đến các vấn đề bản quyền nội dung tài liệu được thành viên tự nguyện đăng tải lên, nếu phát hiện thấy tài liệu xấu hoặc tài liệu có bản quyền xin hãy email cho chúng tôi.
Đã phát hiện trình chặn quảng cáo AdBlock
Trang web này phụ thuộc vào doanh thu từ số lần hiển thị quảng cáo để tồn tại. Vui lòng tắt trình chặn quảng cáo của bạn hoặc tạm dừng tính năng chặn quảng cáo cho trang web này.