我收到错误,指示当前上下文中不存在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.
}
答案 0 :(得分:8)
您已在Quiz_Load
方法的范围内定义了数组,但仅,因此timer1_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
}
进一步阅读
答案 1 :(得分:4)
MyRandomArray
Quiz_Load
方法为local;因此,您无法在timer1_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);
}
或者,由于您有一个计时器滴答,当您设置计时器回调时,您可以将callback state作为MyRandomArray
的一部分进行设置。