c#列表对象超出范围。不知道怎么处理

c#列表对象超出范围。不知道怎么处理,c#,C#,因此,我有一个简单的C#应用程序。应用程序允许用户输入测试分数,然后单击添加按钮。单击时,文本框内容(如果有效)应输入列表对象 我当前的代码是,它表示该对象在当前上下文中不存在 private void ScoreCalculatorApplication_Load(object sender, EventArgs e) { List<int> scoreList = new List<int>(); } private void

因此,我有一个简单的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
    }

所以,问题是我不知道如何测试对象是否存在。

这里的问题是,您在比btn\u Add\u Click exists更严格的范围内创建记分表。您已经在ScoreCalculatorApplication_Load方法的范围内定义了它,这意味着引用将在方法完成后自动被垃圾收集,并且在该方法之外永远无法访问

如果希望类中的所有方法都可以访问scoreList对象,则需要创建一个字段或属性。在类范围内,创建并初始化列表:

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
}
private List scoreList=new List();
私有void scoreCalculator应用程序加载(对象发送方,事件参数e)
{
///把你需要做的其他事情都放在这里
}
计分表现在可以在您的类的任何给定实例中访问。请注意,如果您需要其他对象可以访问scoreList,则应将其设置为公共属性,而不是私有字段


请注意,实际上不需要检查对象是否“存在”,即您的意思——如果您引用了不在该范围内的对象或方法,则程序将不会编译和运行。如果愿意,您可以检查记分表是否已初始化,并且可以通过检查它是否为空来填充,例如,如果(scoreList==null)。

furkle回答了主要问题


只是想回答你的补充问题,现在分数表在范围内,你可以测试它是否已经用
if(scoreList==null)

初始化,将它声明为你的类的一个成员。更具体地说,请?你的表单是一个类,查看源文件的顶部@用户3175451请要求进一步澄清或接受答复。仔细检查你的问题,你似乎根本没有接受任何答案。您可以通过单击最适合您的问题的答案下的大纲复选标记来完成此操作。抱歉,在那里没有看到-我已经完成了将其添加到我的答案中。
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
}