代码之家  ›  专栏  ›  技术社区  ›  AVOlight

C#学习者:当我访问数组[索引]值与直接值时,实际发生了什么

  •  0
  • AVOlight  · 技术社区  · 10 年前

    我喜欢了解事情是如何运作的,我似乎找不到谷歌的简单解释。

    public class Understanding { 
        public int[] array = new[] {5, 6, 7};
        public int x = 5;
        public int y = 6;
        public int z = 7;
    }
    

    例如,如果我访问array[0],与仅访问x相比,这是如何完成的?

    1 回复  |  直到 10 年前
        1
  •  3
  •   Thomas Weller    10 年前

    与C族中的任何其他语言一样(我想也是几乎所有其他语言):物理内存地址是在运行时计算的。 与简单局部变量的区别在于,对于局部变量,地址是固定的,而对于数组元素,则通过简单公式计算:

    [base address of array] + index * [size of array element]