C# 为什么我会收到一个错误,表明我的变量不';当我';你已经定义了吗?

C# 为什么我会收到一个错误,表明我的变量不';当我';你已经定义了吗?,c#,variables,C#,Variables,我收到一个错误,指示当前上下文中不存在MyRandomArray。如何在C#WinForms应用程序中跨类访问变量 public void Quiz_Load(object sender, EventArgs e) { string[] MyRandomArray = getWordList(); } private void timer1_Tick(object sender, EventArgs e) { somefunction(MyRandomArray);/// My

我收到一个错误,指示当前上下文中不存在
MyRandomArray
。如何在C#WinForms应用程序中跨类访问变量

public void Quiz_Load(object sender, EventArgs e)
{
    string[] MyRandomArray = getWordList();
}

private void timer1_Tick(object sender, EventArgs e)
{
    somefunction(MyRandomArray);/// MyRandomArray doesn't exist in the current context.
}

MyRandomArray
是对
quick\u Load
方法的修改;因此,您无法在
timer1\u Tick
方法中看到它。如果需要数组在实例方法中可见,则必须使用字段来存储该数组:

private string[] MyRandomArray;

public void Quiz_Load(object sender, EventArgs e) {
    this.MyRandomArray = getWordList();
}

private void timer1_Tick(object sender, EventArgs e) {
    somefunction(this.MyRandomArray);
}

或者,由于您有一个计时器滴答作响,当您设置计时器回调时,您可能会有一个计时器回调,作为调用的一部分,您可以传递
MyRandomArray
,您已经定义了数组,但只在
quick\u Load
方法的范围内,因此
timer1\u-Tick
的范围内不知道它。如果将其声明为类的实例成员,则可以从任何实例方法访问:

private string[] MyRandomArray;

public void Quiz_Load(object sender, EventArgs e)
{
    this.MyRandomArray = getWordList();
}

private void timer1_Tick(object sender, EventArgs e)
{
   somefunction(this.MyRandomArray); // No problem
}
进一步阅读


  • 实际上是这样的。你的评论无效@科尔约翰逊是的,对不起,我忘了从OP的原始代码中删除它。现在修好了。