C#在当前上下文中不存在

时间:2010-01-23 15:24:25

标签: c#

public void DoStuff()
{
    List<Label> RpmList = new List<Label>();
    RpmList.Add(label0x0);
    RpmList.Add(label0x1);
    RpmList.Add(label0x2);
    RpmList[0].BackColor = System.Drawing.Color.Yellow;
}

public void Form1_Load(object sender, EventArgs e)
{
    DoStuff();
    RpmList[1].BackColor = System.Drawing.Color.Yellow;    //    <---THIS ONE
}

如何从我所有其他课程中访问DoStuff()方法中的列表
在DoStuff()方法中,我访问Form1标签。

4 个答案:

答案 0 :(得分:2)

您应该阅读variable scope

答案 1 :(得分:2)

从方法返回列表并将其分配给局部变量,然后使用局部变量。

 private List<Label> DoSomething()
 {
     ...
     return RpmList;
 }


 ...
 var list = DoSomething();
 list[0].BackColor = ...

答案 2 :(得分:0)

首先,方法名称可以是其他名称。

其次,像这样声明RpmList

class ClassName
{
 List<Label> RpmList = new List<Label>();

 public void DoStuff()
 {
    RpmList.Add(label0x0);
    RpmList.Add(label0x1);
    RpmList.Add(label0x2);
    RpmList[0].BackColor = System.Drawing.Color.Yellow;
 }

}

答案 3 :(得分:0)

您的RpmList变量是DoStuff方法的私有变量。您需要将其移出使其成为全局变量的方法,因此具有整个类的范围。我建议阅读面向对象编程,因为你冒犯了整个方法(封装和变量范围)的一个非常基本的法则。无论如何,要解决您的问题:

List<Label> RpmList = new List<Label>();

public void DoStuff()
{    
    RpmList.Add(label0x0);
    RpmList.Add(label0x1);
    RpmList.Add(label0x2);
    RpmList[0].BackColor = System.Drawing.Color.Yellow;
}

public void Form1_Load(object sender, EventArgs e)
{
    DoStuff();
    RpmList[1].BackColor = System.Drawing.Color.Yellow;    //    <---THIS ONE
}