为什么我的数组脱离了上下文?

时间:2015-05-02 10:08:01

标签: c# arrays

我有以下程序:

number

当我到达比较部分时,我得到:
错误1当前上下文中不存在名称“a” 错误2当前上下文中不存在名称“b”

为什么会这样?

我的第二次尝试更改了代码...从语句范围声明数组:

bool boolFlag=true;
        uint length;
        Console.WriteLine("Give me the length of array a:");
        if (boolFlag=UInt32.TryParse(Console.ReadLine(), out length))
        {
            int[] a = new int[length];
            Console.WriteLine("Give me {0} int numbers for array a[] :", a.Length);
            for (int i = 0; i < a.Length; i++)
            {
                if (boolFlag = Int32.TryParse(Console.ReadLine(), out a[i]))
                {
                    continue;
                }
                else
                {
                    Console.WriteLine("Parsing at Index a[{0}] failed.", i);
                }
            }
        }
        else
        {
            Console.WriteLine("Could not parse length.");
        }


        Console.WriteLine("Give me the length of array b:");
        if (boolFlag = UInt32.TryParse(Console.ReadLine(), out length))
        {
            int[] b = new int[length];
            Console.WriteLine("Give me {0} int numbers for array b[] :", b.Length);
            for (int i = 0; i < b.Length; i++)
            {
                if (boolFlag = Int32.TryParse(Console.ReadLine(), out b[i]))
                {
                    continue;
                }
                else
                {
                    Console.WriteLine("Parsing at Index b[{0}] failed.", i);
                }
            }
        }
        else
        {
            Console.WriteLine("Could not parse length.");
        }





        if (a.Length==b.Length)
        //{
        //    Console.WriteLine("a and b have equal Length");
        //    for (int i = 0; i < a.Length; i++)
        //    {
        //        if (a[i]==b[i])
        //        {
        //            boolFlag = true;
        //            continue;
        //        }
        //        else
        //        {
        //            Console.WriteLine("a[{0}] != b[{0}]", i);
        //        }
        //    }
        //}
        //else
        //{
        //    Console.WriteLine("The arrays don`t have equal length");
        //}
        Console.ReadLine();

现在我明白了:

错误1使用未分配的局部变量'b'
错误2使用未分配的局部变量'a'

2 个答案:

答案 0 :(得分:2)

因为您在其范围之外使用ab。将其声明移至代码的开头并将其分配给null。请注意,您可能需要考虑在用户输入错误长度时停止执行。显示错误消息后放置return;

另外,请考虑查看有关变量范围的this有用文章。

答案 1 :(得分:1)

您需要在ifs之外声明a和b数组,即使您在其中分配值也是如此。所以移动int [] a = new int [0];和int [] b = new int [0];在代码的开头并将if更改为if(a.length&gt; 0&amp;&amp; b.length&gt; 0&amp;&amp; a.length == b.length)。