通过其接口IList <t>?</t>传递数组时是否发生任何装箱

时间:2014-06-08 21:06:41

标签: c# .net arrays boxing

我想知道拳击是否发生在以下场景中:

int[] someNumbers = { 1, 2, 3, 4, 5 };
Foo(someNumbers);

// ...

private void Foo(IList<int> numbers) {
}

我无法找到这个问题的答案,如果这是重复的话,请道歉!

1 个答案:

答案 0 :(得分:2)

虽然int是值类型,但数组是引用类型,因此someNumbers是引用类型。因此,在将其分配给IList<int>时不会发生装箱。如果您将数组的元素指定为Foo内的引用类型,例如

,则会发生拳击
private void Foo(IList<int> numbers) {
    IComparable<int> nc = numbers[0];
}