访问C#中的私有方法

时间:2011-06-05 06:57:06

标签: c# arrays private-methods

大家好我是C#世界的新手,我遇到了问题。我在我的程序的Form_Load方法中完成了一个数组,但是我需要像这样在picture_box方法中访问数组:

        private void Form2_Load(object sender, EventArgs e)
    {
        //In this method we get a random array to set the images

        int[] imgArray = new int[20];

        Random aleatorio = new Random();

        int num, contador = 0;

        num = aleatorio.Next(1, 21);

        imgArray[contador] = num;
        contador++;

        while (contador < 20)
        {
            num = aleatorio.Next(1, 21);
            for (int i = 0; i <= contador; i++)
            {
                if (num == imgArray[i])
                {
                    i = contador;
                }
                else
                {
                    if (i + 1 == contador)
                    {
                        imgArray[contador] = num;
                        contador++;
                        i = contador;
                    }
                }
            }
        }

    }


    private void pictureBox1_Click(object sender, EventArgs e)
    {
        pictureBox1.Image = Image.FromFile(@"C:\Users\UserName\Desktop\MyMemoryGame\" + imgArray[0] + ".jpg");
    }

但我只收到错误:错误1当前上下文中不存在名称'imgArray'

2 个答案:

答案 0 :(得分:4)

您需要在类级别(Form2_Load之外)而不是在其中定义int [] imgArray。否则,该变量的“范围”仅限于该函数。您将需要敲除Form2_Load中的第一个“int []”部分,以防止您仅声明一个新变量。

例如:

public class MyClass
{ 
    private int[] myInt;

    public void Form2_Load(...) {
        myInt = ...;
    }

}

答案 1 :(得分:3)

错误意味着它所说的内容。

您已在Form2_Load函数的范围中声明了数组。除此之外,它将不存在。

要执行您要实现的目标,请将一个私有数组添加到表单本身。

private int[] _imgArray = new int[20];

private void Form2_Load(object sender, EventArgs e)
{
    //Setup the imgArray
}

private void pictureBox1_Click(object sender, EventArgs e)
{
    //_imgArray is now available as its scope is to the class, not just the Form2_Load method

}

希望这有帮助。