gpt4 book ai didi

.net 为什么不能从 int[] 转换为 object[]

转载 作者:行者123 更新时间:2023-12-01 08:12:21 24 4
gpt4 key购买 nike

我有以下方法

private void AM(object[] x)
{
}

当我们这样称呼它时:
int[] x = new int[1];
AM(x);

我们收到一个编译错误,比如“无效参数”、“无法从 int[] 转换为 object[]”。

但是,如果我们有一个参数(对象 y),我们可以输入 int 作为输入参数。

我的问题是:为什么微软以不同的方式设计它们?

最佳答案

当您通过 int (值类型)转换为带有 object 的方法(一个引用类型)参数,在堆上创建一个新对象和int的值被复制到其中。然后将对该对象的引用(装箱的 int)传递给方法参数。
int[]object[]都是数组,但它们的元素类型非常不同。作为数组,它们都是引用类型,因此采用 object[] 的方法参数需要对对象数组的引用。对整数数组的引用是非常不同的。

因为 int是值类型,没有简单的方法可以将引用转换为 int[]成对 object[] 的引用无需遍历整个 int[]并将每个元素装箱。就时间和内存而言,这可能是一项昂贵的操作,并且编译器不会自动为您执行此操作。

关于.net 为什么不能从 int[] 转换为 object[],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11681051/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com