所以,我有一个简单的C#应用程序。该应用程序允许用户输入测试分数,然后单击“添加”按钮。单击时,文本框内容(如果有效)应进入列表对象。
我当前的代码是说当前上下文中不存在该对象。
private void ScoreCalculatorApplication_Load(object sender, EventArgs e)
{
List<int> scoreList = new List<int>();
}
private void btn_Add_Click(object sender, EventArgs e)
{
scoreList.Add();//this line has the problem
}
所以,我不确定为什么scoreList不存在,因为ScoreCalculatorApplication_Load方法在加载应用程序时执行。
无论如何,我也考虑过这样的事情:
private void ScoreCalculatorApplication_Load(object sender, EventArgs e)
{
//remove this method.
}
private void btn_Add_Click(object sender, EventArgs e)
{
//is there a test to see if this object exists?
if (//see if the list does not exist)
//if not existant, create it here.
scoreList.Add();
}
所以,问题是我不知道如何测试对象是否存在。
答案 0 :(得分:3)
这里的问题是你在比btn_Add_Click存在更严格的范围内创建scoreList。你已经在ScoreCalculatorApplication_Load方法的范围内定义了它,这意味着引用将在之后自动进行垃圾回收该方法完成,并且永远不会在该方法之外访问。
如果希望scoreList对象可供类中的所有方法访问,则需要创建字段或属性。在类范围内,创建并初始化List:
private List<int> scoreList = new List<int>();
private void ScoreCalculatorApplication_Load(object sender, EventArgs e)
{
/// put whatever else you need to do on loading here
}
scoreList现在可以在您班级的任何给定实例中访问。请注意,如果您需要其他对象可以访问scoreList,则应将其设为公共属性,而不是私有字段。
请注意,确实不需要检查对象是否存在&#34;从某种意义上说,如果您引用了该范围内不存在的对象或方法,程序将无法编译和运行。如果您愿意,可以检查scoreList是否已初始化,并且可以通过检查它是否为空来填充,例如if(scoreList == null)。
答案 1 :(得分:1)
只是想回答您的补充问题,现在得分列表在范围内,您可以测试它是否已使用if(scoreList==null)
进行初始化