Có rất nhiều lịch sử đằng sau câu hỏi này, điều này quay trở lại năm 1997 khi Microsoft phát hành đặc tả kỹ thuật tự động hóa COM. Cho phép các bộ định vị/getters được phép có đối số.Visual Basic là một người dùng đầu tiên của spec, nó đã được điều khiển trong phần nhỏ của ngôn ngữ để tìm một sự thay thế cho mô hình mở rộng VBX. Mà chạy ra khỏi khí xung quanh thời gian đó, nó đã phụ thuộc nhiều vào mô hình mã hóa 16-bit.
Nhóm C# lấy thái độ khá vô nghĩa đối với đối tượng địa lý, họ tuyệt đối ghét sự mơ hồ về cú pháp. Điều đó không thuộc về một ngôn ngữ hoàn toàn mới. VB.NET không có cùng một sự sang trọng, họ đã phải ít nhất hỗ trợ một số tính năng của thế hệ trước, VB6 vào thời điểm đó.
Tua lùi 10 năm, nhóm C# phải quay lại một chút do nhu cầu phổ biến. Các thuộc tính được lập chỉ mục là đầy đủ, ví dụ, mô hình đối tượng Office. Trong phiên bản C# 4, chúng cho phép các thuộc tính được lập chỉ mục dành riêng cho các giao diện COM để làm mềm bớt nỗi đau khi viết mã C# Office. Và nhiều hơn nữa, các đối số tùy chọn và được đặt tên cũng đã được thêm vào để xử lý sự đau khổ Type.Missing. Và từ khóa động để hỗ trợ ràng buộc trễ, một tính năng quan trọng khác của COM và Visual Basic là thực sự là gây khó khăn khi thực hiện trong C# mà không có từ khóa đó.
Ngắn câu chuyện ngắn, COM là đẹp, sự thanh lịch của IUnknown là tuyệt vời. Tony Williams là thiên tài đằng sau nó. Video is here, đáng xem. Các tập hợp con của COM Automation, IDispatch, không phải là quá đẹp. Nhưng nó cực kỳ thành công. Ngôn ngữ bỏ qua nó lúc nguy hiểm của họ. C# không.
Những chi tiết này có thể là âm thanh phức tạp từ một thời đại đã qua rồi nhưng không. Phiên bản tiếp theo của Windows API, WinRT hoàn toàn dựa trên IUnknown. Nếu không được gọi là "Metro" hoặc "Giao diện người dùng hiện đại". IDispatch không tồn tại, thay thế bằng IInspectable.
Nguồn
2012-03-15 22:03:25
MyOjbect [index] = SomeValue; Bạn có thể thực hiện điều đó thông qua một thuộc tính mặc định trong vb.net – MarcelDevG
Có, bạn có thể làm điều đó. Bạn chỉ có thể có một thuộc tính mặc định. Điều này cho phép bạn có nhiều thuộc tính giống như từ điển trên cùng một loại. –
Ngữ nghĩa, nhưng bạn không thể có một setter trong thuộc tính 'ReadOnly'. –