Я хотел бы знать, происходит ли бокс в следующем сценарии:
int[] someNumbers = { 1, 2, 3, 4, 5 };
Foo(someNumbers);
// ...
private void Foo(IList<int> numbers) {
}
Я не смог найти ответ уже по этому вопросу, поэтому извиняюсь, если это дубликат!
Хотя int
- типы значений, массивы являются ссылочными типами, поэтому someNumbers
является ссылочным типом. Поэтому при присвоении ему IList<int>
никакого бокса не происходит. Бокс произойдет, если вы присвоили элемент массива ссылочному типу внутри Foo
например
private void Foo(IList<int> numbers) {
IComparable<int> nc = numbers[0];
}
int[]
является ссылочным типом, поэтому нет.