Если вы откроете класс ArrayList
в ILSpy, вы увидите, что резервное хранилище:
private object[] _items;
и что метод Add
принимает экземпляр типа object
:
public virtual int Add(object value) { ... }
Поэтому, когда вы вызываете Add
с целым числом, .NET вставляет целое число, а затем оно добавляется к массиву _items
в ArrayList
как object
.
Кстати, если вам нужно ArrayList
только целых чисел и вы используете .NET 2.0 Framework или более позднюю версию, вам следует использовать класс List (он же универсальный список), который будет работать лучше, так как при этом не требуется указывать int
при сохранении или извлечении его из списка (см. раздел «Вопросы производительности» в этой последней ссылке).