如何添加到尚未创建的列表。请帮忙!

时间:2010-07-30 20:41:33

标签: c# list

我正在尝试编写一个简单的员工注册表,我想使用通用列表来“保存”我正在创建的人员。

manager类有一个构造函数和一个方法(见下文)。 构造函数创建List并且方法添加到它,或者应该添加到它。 问题是我不能像下面那样做,因为Visual Studio说当前上下文中不存在employeeList。我怎么会写这个?

public EmployeeManager()
{
     List<string> employeeList = new List<string>();
}

public void AddEmployee()
{
     employeeList.add("Donald");
}

11 个答案:

答案 0 :(得分:12)

您需要使employeeList成为该类的成员变量:

class EmployeeManager
{
    // Declare this at the class level
    List<string> employeeList;

    public EmployeeManager()
    {
         // Assign, but do not redeclare in the constructor
         employeeList = new List<string>();
    }

    public void AddEmployee()
    {
         // This now exists in this scope, since it's part of the class
         employeeList.add("Donald");
    }
}

答案 1 :(得分:1)

您是否将employeeList声明为该类的成员?

private List<string> employeeList = new List<string();

public EmployeeManager()
{

}

public void AddEmployee()
{
     employeeList.add("Donald");
}

答案 2 :(得分:1)

List<string> employeeList = new List<string>(); 

public EmployeeManager() 
{ 
} 

public void AddEmployee() 
{ 
     employeeList.add("Donald"); 
} 

或者,或者

List<string> employeeList;

public EmployeeManager() 
{ 
     employeeList = new List<string>(); 
} 

public void AddEmployee() 
{ 
     employeeList.add("Donald"); 
} 

正如您所定义的那样,employeeList只存在于ctor中。一旦完成,employeeList就会消失,并且它的内存被收集起来。通过将声明移动到类级别,它将在对象的整个生命周期中存在。

答案 3 :(得分:1)

employeeList必须是您班级的成员

答案 4 :(得分:1)

声明add employee函数范围之外的列表。然后,如果你在构造函数中实例化它,你会没事的。

答案 5 :(得分:0)

您收到此错误的原因是因为employeeList的范围仅在构造函数中。为了使用employeeList,必须在更大的范围内定义它,如下所示:

class EmployeeManager
{
    private List<string> employeeList;

    public EmployeeManager()
    {
         employeeList = new List<string>();
    }

    public void AddEmployee()
    {
         employeeList.add("Donald");
    }
}

答案 6 :(得分:0)

您遇到的问题是范围。当构造函数触发时,它会创建employeeList列表,然后退出。此时,employeeList从内存(堆栈)中消失。

您需要的是在类级别声明employeeList,如下所示:

List<string> employeeList = null;
public EmployeeManager()
{
     employeeList = new List<string>();
}

public void AddEmployee()
{
     employeeList.add("Donald");
}

答案 7 :(得分:0)

您需要它成为会员级变量

public class EmployeeManager
{
    private List<string> _employeeList;
    public EmployeeManager()  
    {  
        _employeeList = new List<string>();  
    }  

    public void AddEmployee()  
    {  
        _employeeList.add("Donald");  
    } 
}

答案 8 :(得分:0)

您需要在Add方法可访问的范围内实例化EmployeeManager - 您只需定义该类。

答案 9 :(得分:0)

您的EmployeeManager课程需要一个与employeeList对应的字段或属性。像这样:

public class EmployeeManager
{
   private List<string> employeeList; //Create Field

   public EmployeeManager()
   {
     this.employeeList = new List<string>();
   }

   public void AddEmployee()
   {
     this.employeeList.Add("Donald");
   }
}

答案 10 :(得分:0)

你遇到了一个叫做变量范围的东西。目前,您的列表的范围是构造函数。您需要通过将其定义为类成员来将其范围限定为类,其他答案已提供代码示例。

http://www.blackwasp.co.uk/CSharpVariableScopes.aspx

http://msdn.microsoft.com/en-us/library/aa691132(VS.71).aspx