Downcasting là không phổ biến, có thể là một mùi mã
Tôi không đồng ý. Downcasting là cực kỳ phổ biến ; một số lượng lớn các chương trình trong thế giới thực chứa một hoặc nhiều chương trình phát sóng. Và nó có thể không phải là một mùi mã. Nó chắc chắn là một mùi mã. Đó là lý do tại sao hoạt động downcasting được yêu cầu phải được hiển thị trong văn bản của chương trình . Nó để bạn có thể dễ dàng nhận thấy mùi hơn và dành sự chú ý đánh giá mã về nó.
Trong trường hợp nào thì thích hợp để viết mã mà phát sóng?
Trong mọi trường hợp:
- bạn có kiến thức đúng 100% về một thực tế về loại thời gian chạy của một biểu thức cụ thể hơn loại thời gian biên dịch của biểu thức và
- bạn cần tận dụng thực tế đó để sử dụng khả năng của đối tượng không khả dụng trên loại thời gian biên dịch và
- sử dụng thời gian và công sức để viết dàn diễn viên tốt hơn là tái cấu trúc chương trình để loại bỏ một trong hai điểm đầu tiên.
Nếu bạn có thể cấu trúc lại một chương trình một cách rẻ tiền để loại thời gian chạy có thể được suy ra bởi trình biên dịch hoặc để cấu trúc lại chương trình để bạn không cần khả năng của loại dẫn xuất hơn, thì hãy làm như vậy. Truyền phát đã được thêm vào ngôn ngữ cho những trường hợp khó khăn và tốn kém để tái cấu trúc chương trình.
Tại sao downcasting được hỗ trợ bởi ngôn ngữ?
C # được phát minh bởi các lập trình viên thực dụng, những người có việc phải làm, cho các lập trình viên thực dụng, những người có việc phải làm. Các nhà thiết kế C # không phải là những người theo chủ nghĩa thuần túy OO. Và hệ thống loại C # không hoàn hảo; bằng cách thiết kế nó đánh giá thấp các hạn chế có thể được đặt trên loại thời gian chạy của một biến.
Ngoài ra, downcasting rất an toàn trong C #. Chúng tôi có một đảm bảo chắc chắn rằng downcast sẽ được xác minh trong thời gian chạy và nếu nó không thể được xác minh thì chương trình sẽ thực hiện đúng và gặp sự cố. Đây là điều tuyệt vời; điều đó có nghĩa là nếu sự hiểu biết đúng 100% về ngữ nghĩa của bạn hóa ra đúng 99,99%, thì chương trình của bạn hoạt động 99,99% thời gian và làm hỏng phần còn lại của thời gian, thay vì hành xử không thể đoán trước và làm hỏng dữ liệu người dùng 0,01% thời gian .
BÀI TẬP: Có ít nhất một cách để tạo ra một downcast trong C # mà không cần sử dụng toán tử cast rõ ràng. Bạn có thể nghĩ về bất kỳ kịch bản như vậy? Vì đây cũng là những mùi mã tiềm năng, bạn nghĩ yếu tố thiết kế nào đã đi vào thiết kế của một tính năng có thể tạo ra sự cố downcast mà không có biểu hiện trong mã?