2009-11-30 30 views
6

Tôi vẫn đang cố gắng lập bản đồ kiến ​​thức sâu và cũ của mình từ C/C++ cho kiến ​​thức .Net nông cạn hơn. Hôm nay thời gian đã đến "như" (và ngầm "là" và đúc) trong C#.Chi phí của "như" so với QueryInterface trong COM hoặc dynamic_cast trong C++ là gì?

Mô hình tinh thần "như" của tôi là số QueryInterface hoặc dynamic_cast (một dynamic_cast với đối số con trỏ, không tham chiếu, nghĩa là) cho C#. Câu hỏi của tôi là hai lần:

  1. Hội chợ so sánh của tôi có phải không?
  2. Chi phí tương đối của "như" so với QueryInterface hoặc dynamic_cast là gì?

Trả lời

4
  1. Có, so sánh là công bằng, đặc biệt khi giao dịch với con trỏ. Mỗi một trong ba thành công và trả về một con trỏ không null của kiểu đích, hoặc trả về null.

  2. Bạn thực sự có thể sử dụng toán tử as khi làm việc với đối tượng COM trong .NET, làm cho nó tương đương với QueryInterface với một lượng nhỏ phí trên cho interop được quản lý/COM. Bên trong CLR (đúc giữa các loại được quản lý), toán tử ascực kỳ nhẹ so với QueryInterface trong COM hoặc dynamic_cast trong C++. Đối với tất cả các vị trí trong mã của tôi, trong đó tôi để sử dụng tính năng truyền động vì lý do nào đó, tôi chưa bao giờ thấy nhà điều hành as hiển thị ngay cả một mẫu trong hồ sơ - và xem xét tôi duy trì việc triển khai ngôn ngữ (StringTemplate), tôi giả định rằng có nghĩa là một cái gì đó. :)

Các vấn đề liên quan