我正在尝试编写一个简单的员工注册表,我想使用通用列表来“保存”我正在创建的人员。
manager类有一个构造函数和一个方法(见下文)。 构造函数创建List并且方法添加到它,或者应该添加到它。 问题是我不能像下面那样做,因为Visual Studio说当前上下文中不存在employeeList。我怎么会写这个?
public EmployeeManager()
{
List<string> employeeList = new List<string>();
}
public void AddEmployee()
{
employeeList.add("Donald");
}
答案 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