Wiadomo, że standardowe kolekcje np. Arraylist podczas swojego działania konwertują wszystkie "wkładane" do niego dane na typ object przez co jeśli tych danych jest 10000 to możemy stracić na wydajności przez właśnie te transfery w pamięci:
int i = 123;
// The following line boxes i.
object o = i;
source: msdn
Jak się ma sprawa w przypadku typów generycznych? Jak one działają na parametrze T?
Analizując ten kod IL:
widać wyraźnie proces boxingu w przypadku typu Arraylist natomiast przy typie generycznym List<T>, CLR pracuje jakby cały czas na Int32 czyli on jakby zamienia List<T> na List<int> i cały czas na tym pracuje bez żadnych konwersji na Object jak ma to miejsce w Javie?
Dobrze to rozumiem? Czy możecie coś jeszcze dopowiedzieć o zasadzie działania typu generycznego?