Myślałem o tym. zajęcia są oczywiście przekazywane przez ptr. Podejrzewam, że struktury są przekazywane przez kopiowanie, ale nie wiem na pewno. (Wydaje się, że dla tablicy int jest niepotrzebne, aby każdy element miał wartość ptr, a liczba przejść dla int)W jaki sposób generics implementuje structs?
Ale myśląc o tym, List<MyStruct>
nie może znać rozmiaru mojej struktury. Co się stanie, gdy to zrobię? Czy istnieje wiele kopii "List`1" i za każdym razem, gdy używam go z rozmiarem pamięci, nie ma on tworzy nowej implementacji? (dostosowanie do nowych przesunięć T i tym podobnych).
To może mieć sens, ponieważ źródło znajduje się w bibliotece CIL wewnątrz biblioteki DLL. Ale całkowicie zgaduję, jak to się robi? Być może referencja czy strona # do standardów ECMA?
Wiem niewiele o tym, jak C# implementuje generyczne. Ale dla odniesienia, tak właśnie działają szablony C++ (teoretycznie dla każdego typu tworzona jest osobna implementacja 'List'). –
@Oli: tak, również wiem, że nie kompiluje metod, chyba że go używasz i potrzebujesz szablonu w nagłówku. C# nie ma nagłówków, ale generics nadal działają po zostały one skompilowane do biblioteki dll –
@ Oli: Oznacza to, że będzie miał oddzielne implementacje dla każdego typu wartości i jedną wspólną implementację dla typów odniesienia. –