Tôi đã suy nghĩ về điều này. các lớp học rõ ràng được thông qua xung quanh bởi ptr. Tôi nghi ngờ cấu trúc được thông qua xung quanh bằng cách sao chép nó, nhưng tôi không biết chắc chắn. (nó có vẻ như một sự lãng phí cho một mảng int để có mọi phần tử một ptr. và đi qua ptrs cho ints)Làm thế nào để generics thực hiện cấu trúc?
Nhưng suy nghĩ về nó, List<MyStruct>
không thể biết kích thước của cấu trúc của tôi. Điều gì sẽ xảy ra khi tôi làm điều này? Có nhiều bản sao của "List`1" và mỗi khi tôi sử dụng nó với một kích thước lưu trữ nó không có nó tạo ra một thực hiện mới? (điều chỉnh cho các offset mới của T và như vậy).
Điều đó có thể có ý nghĩa vì nguồn sẽ nằm trong CIL bên trong tệp DLL. Nhưng tôi hoàn toàn đoán, làm thế nào nó được thực hiện? Có lẽ một tài liệu tham khảo hoặc trang # cho các tiêu chuẩn ECMA?
Tôi biết rất ít về cách C# thực hiện generics. Nhưng để tham khảo, đó chính xác là cách các mẫu C++ hoạt động (theo lý thuyết, việc thực hiện riêng biệt 'Danh sách' sẽ được khởi tạo cho từng loại). –
@Oli: Vâng, tôi cũng biết nó không biên dịch phương pháp trừ khi bạn sử dụng nó và bạn cần mẫu trong tiêu đề. C# không có tiêu đề nhưng generics vẫn hoạt động sau khi chúng được biên dịch thành một dll –
@Oli: Tức là, nó sẽ có các triển khai riêng biệt cho từng loại giá trị và một triển khai được chia sẻ cho các loại tham chiếu. –