通过接口IList传递数组时是否发生装箱?
本文关键字:是否 数组 IList 接口 | 更新日期: 2023-09-27 18:07:53
我想知道在以下场景中是否发生了装箱:
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];
}