牛骨文教育服务平台(让学习变的简单)
博文笔记

ArrayList和多维数组

创建时间:2010-09-05 投稿人: 浏览次数:1085

MSDN里说:不支持将多维数组用作 ArrayList 集合中的元素。

可是自己试了一下是可以的,包括多维数组和锯齿数组

 

            ArrayList a = new ArrayList();

            // ArrayList集合接受null作为元素,并且支持重复元素.

            a.Add(null);

            //嵌套数组(Array of Array),又叫锯齿数组(Jagged Array),子数组可以不一样长.元素无法被直接访问

            int[][] matrix = new int[2][];

            matrix[0] = new int[2];

            matrix[1] = new int[3];

            a.Add(matrix);

            //多维数组(Multi-Dimensional Array)维度长度固定

            int[,] m = new int[2, 2];

            a.Add(m);

 

            for (int i = 0; i < a.Count; i++)

            {

                if (a[i] == null) continue;

                int[][] item = a[i] as int[][];

                if (item != null)

                {

 

                    for (int j = 0; j < item.Length; j++)

                    {

                        for (int k = 0; k < item[j].Length; k++)

                        {

                            Console.Write(item[j][k]);

                        }

                        Console.WriteLine();

                    }

                }

                else

                {

                    int[,] item2 = a[i] as int[,];

                    for (int j = 0; j < 2; j++)

                    {

                        for (int k = 0; k < 2; k++)

                        {

                            Console.Write(item2[j, k]);

                        }

                        Console.WriteLine();

                    }

                }

 

关于多维数组和嵌套数组的效率问题,有人研究了JIT编译的MSIL指令并做了测试之后,得出嵌套数组其实比多维数组效率高的结论.

http://www.winu.cn/space-14160-do-blog-id-74839.html

 

声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。