为什么我得到"当前语境中不存在名称x"?

时间:2014-06-18 10:51:54

标签: c# scope

我收到以下错误:

  

错误1名称' myList'在当前上下文中不存在

代码如下:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace WindowsFormsApplication6
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            List<string> myList = new List<string>();
            myList.Add("Dave");
            myList.Add("Sam");
            myList.Add("Gareth");
        }

        private void button1_Click(object sender, EventArgs e)
        {
            foreach (string item in myList)
            {
               listView1.Items.Add(item);
            }
        }
    }
}

这是一个非常简单的例子,现实世界的应用程序会让我们的课程更多,但我不明白为什么button1_click事件处理者无法看到数组列表。

1 个答案:

答案 0 :(得分:2)

根据您上面的评论,错误是:&#34;名称&#39; myList&#39;在当前的背景下不存在&#34;,对吧?问题是myListform1()方法中声明,并且您尝试从另一个方法(button1_click()方法)访问它。您必须将方法外部的列表声明为实例变量。尝试类似:

namespace WindowsFormsApplication6
{
    public partial class Form1 : Form
    {
        private List<string> myList = null;

        public Form1()
        {
            InitializeComponent();
            myList = new List<string>();
            myList.Add("Dave");
            myList.Add("Sam");
            myList.Add("Gareth");
        }

        private void button1_Click(object sender, EventArgs e)
        {
            foreach (string item in myList)
            {
               listView1.Items.Add(item);
            }
        }
    }
}