如果你知道要调用的是哪一维!当然不用遍历!
如果你还要判断的话!就一定要遍历.你可以把
遍历的那段代码放在一个using中,这样会自动释放资源!

解决方案 »

  1.   

    http://topic.csdn.net/u/20100513/11/823236cd-cd29-4d58-b8a9-233a3b0ce9dc.html
    参考这帖子
      

  2.   

    如果你描述的没错,没有吧交错数组当成二维数组。那只能告诉你,一定要复制,不过可以优化。static void Main(string[] args)
    {
        int[,] arr2 = new int[2, 3] { { 1, 2, 3 }, { 4, 5, 6 } };
        int[] arr1 = GetByRank(arr2, 1);
        foreach (int i in arr1)
        {
            Console.WriteLine(i);
        }
        Console.ReadKey();
    }public static int[] GetByRank(int[,] arr2, int rank)
    {
        int[] arr1 = new int[arr2.GetLength(1)];
        IntPtr hArray = Marshal.UnsafeAddrOfPinnedArrayElement(arr2, 0 * arr2.GetLength(0));
        Marshal.Copy(hArray, arr1, 0, arr1.Length);
        return arr1;
    }
      

  3.   

    有个测试的忘记修改了。忽略3楼 那个顶死的。
    static void Main(string[] args)
    {
        int[,] arr2 = new int[2, 3] { { 1, 2, 3 }, { 4, 5, 6 } };
        int[] arr1 = GetByRank(arr2, 0);
        foreach (int i in arr1)
        {
            Console.WriteLine(i);
        }
        Console.ReadKey();
    }public static int[] GetByRank(int[,] arr2, int rank)
    {
        int[] arr1 = new int[arr2.GetLength(1)];
        IntPtr hArray = Marshal.UnsafeAddrOfPinnedArrayElement(arr2, rank * arr2.GetLength(0));
        Marshal.Copy(hArray, arr1, 0, arr1.Length);
        return arr1;
    }