【发布时间】:2018-01-10 16:35:28
【问题描述】:
int[] age=new int[5];
在阅读了很多帖子和博客之后,我仍然不清楚为什么数组是引用类型。我知道这个问题已经很老了,被问了很多次,但仍然找不到直接的答案。
已知事物:由于数组是在堆上分配的,因此它们是引用类型。
需要知道:将(编译器)数组作为引用类型的原因是什么?。 假设 age[0]=5,age[1]=25 ,如果它们的类型是对象,那么在堆栈上分配这些或引用堆有什么困难。为什么认为堆访问时间比较慢?。
为什么是堆,为什么不像结构那样在堆栈上?
【问题讨论】:
-
所以你希望数组是……一种值类型?如果您将它们传递到其他地方,则复制?如果它们对于堆栈来说太大了怎么办?
-
您的问题中有很多误解;从这里开始:The Stack is an implementation detail - part 1.
-
也许值类型和引用类型比堆栈和堆更多。只是猜测。
-
@AlexAtNet 那篇关于在堆栈上分配数组的文章让我大吃一惊……一些基本功能完全超出了我的意识。不过,我倾向于避免不安全的上下文。