使用数组作为全局

时间:2012-06-27 07:01:34

标签: c# c#-4.0 multidimensional-array

我知道宣布全局不是c#的事情。我有一个多维数组的代码,我希望用户输入行的数量,然后输入每行的cols数。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Multidimensional_Array
{

class Program
    {

        static void Main(string[] args)
        {
            Console.WriteLine("ENter the no of rows ");
            int rows=Convert.ToInt32(Console.ReadLine());

           for(int i=0;i<rows;i++)
            {

                Console.WriteLine("Enter no of columns for "+i+" row");
                   var columns  = Convert.ToInt32(Console.ReadLine());
                int [,] multiDynamic=new int[rows,columns];
                Console.WriteLine("enter " +i+ " row elements");
                for(int j=0;j<columns;j++)
                {
                    multiDynamic[i,j]=Convert.ToInt32(Console.ReadLine());
                }


            }
            Console.WriteLine("The array elements are ");


    }
}

现在在尝试编写用于显示数组的代码时,发现数组multiDynamic的范围将保留在for循环中。是否有任何方法可以访问此数组?

更新 - 最后在显示数组时也需要访问columns数组。请为此发布解决方案。

4 个答案:

答案 0 :(得分:2)

编辑根据评论进行了更新。

使用Jagged数组。

     int [][] multiDynamic=new int[rows][];

   for(int i=0;i<rows;i++)
    {
        Console.WriteLine("Enter no of columns for "+i+" row");
           var columns  = Convert.ToInt32(Console.ReadLine());
        multiDynamic[i] = new int[columns];
        Console.WriteLine("enter " +i+ " row elements");
        for(int j=0;j<columns;j++)
        {
            multiDynamic[i][j]=Convert.ToInt32(Console.ReadLine());
        }


    }
    Console.WriteLine("The array elements are ");

您可以访问内部数组(列),如下所示

     foreach(var innerArray in multiDynamic)
     {
             foreach(var item in innerArray)
             {
               Console.WriteLine(item);
             }
             Console.WriteLine();
     }        

答案 1 :(得分:1)

在循环外声明数组。

int [,] multiDynamic = null;
for(int i=0;i<rows;i++)
        {

            Console.WriteLine("Enter no of columns for "+i+" row");
            var columns  = Convert.ToInt32(Console.ReadLine());
             multiDynamic=new int[rows,columns];
            Console.WriteLine("enter " +i+ " row elements");
            for(int j=0;j<columns;j++)
            {
                multiDynamic[i,j]=Convert.ToInt32(Console.ReadLine());
            }


        }

答案 2 :(得分:1)

在第一个循环之外声明它。

答案 3 :(得分:-1)

在外部scrope声明它:

int rows=Convert.ToInt32(Console.ReadLine());
int [,] multiDynamic=new int[rows,columns];
for(int i=0;i<rows;i++)
{

    Console.WriteLine("Enter no of columns for "+i+" row");
       var columns  = Convert.ToInt32(Console.ReadLine());
    Console.WriteLine("enter " +i+ " row elements");
    for(int j=0;j<columns;j++)
    {
        multiDynamic[i,j]=Convert.ToInt32(Console.ReadLine());
    }


}
Console.WriteLine("The array elements are ");