函数不返回数组

时间:2015-04-18 19:41:43

标签: c#

我有这个函数来启动一个二维数组:

static Array Matrix(int Rows, int Columns) 
{
    int[,] LotteryArray = new int[Rows,Columns];

    for (int i = 0; i < LotteryArray.GetLength(0); i++) 
    {
        for (int j = 0; j < LotteryArray.GetLength(1); j++)
        {
            LotteryArray[i, j] = RandomNum(1, 46);  
            Console.Write("{0,3},", LotteryArray[i, j]); 
        }
        Console.WriteLine();
    }
    return LotteryArray;
}

然后我有这个应该给我一个一维数组,看看winning数组中有多少数字在矩阵中:

int RowNum = 1;
int Prediction = 0;
Console.WriteLine("Your winning numbers are!");
Console.WriteLine("------------------------");
int[] Winner = new int[6];
for (int i = 0; i < Winner.Length; i++)  //this loop is to initiate and print the winning numbers
{
    Winner[i] = RandomNum(1, 46);        //the numbers are supposed to be between 1 and 45, so i tell it to do it until 46 because the upper limit is exclusive
    Console.Write("{0,3},", Winner[i]);
}

Console.WriteLine();
Console.WriteLine("------------------------"); //these two lines are for aesthetics 
Matrix(Rows, Columns);


foreach (int i in Winner) 
{
    for (int j = 0; j<LotteryArray; j++)
    {
        if (Winner[i] == j)
        {
            Prediction++;
            if (j % 6 == 0) { RowNum++; }
        }
        Console.WriteLine("you got {0} correct prediction in row number {1}",Prediction,RowNum);
        RowNum = 1;
   }
}

它告诉我当前情境中不存在LotteryArray

2 个答案:

答案 0 :(得分:3)

LotteryArray是另一种方法中的变量。您无法在显示的范围内访问它。

您可以从方法返回到变量,然后使用它。

var LotteryArray = Matrix(Rows, Columns);

foreach (int i in Winner) 
    {
        for (int j = 0; j<LotteryArray; j++)
        {
            if (Winner[i] == j)
            {
                Prediction++;
                if (j % 6 == 0) { RowNum++; }
            }
            Console.WriteLine("you got {0} correct prediction in row number {1}",Prediction,RowNum);
            RowNum = 1;
        }
    }

答案 1 :(得分:0)

LotteryArray是在Matrix方法中声明的变量,在外面不可见。