对于二维System.Array,foreach迭代是如何发生的?

use*_*677 0 c#

假设我们正在创建一个System.Array


      Array _twoD = Array.CreateInstance(typeof(string), 2,2);


        _twoD.SetValue("Harrish", 0, 0);
        _twoD.SetValue("Goel", 0, 1);
        _twoD.SetValue("Prakash", 1, 0);
        _twoD.SetValue("Manish", 1, 1);
        foreach (string str in _twoD)
        {
            Console.WriteLine(str);
        }
Run Code Online (Sandbox Code Playgroud)

枚举器如何自动迭代[0,0] [0,1],[1,0],[1,1]?

[对于单维数组,很容易理解,2D和3D内部会发生什么?]

我们可以使用System.Array创建Jagged Style数组吗?

Sve*_*lov 6

来自msdn

System.Array类型(第12.1.1节)是一种集合类型,由于所有数组类型都派生自System.Array,因此在foreach语句中允许使用任何数组类型表达式.foreach遍历数组元素的顺序如下:对于单维数组,元素以递增的索引顺序遍历,从索引0开始,以索引Length - 1结束.对于多维数组,遍历元素这样最右边的尺寸的索引首先增加,然后是下一个左边的尺寸,依此类推到左边.