方法中无法识别的名称

时间:2019-01-12 06:34:51

标签: c#

在下面的示例中,我尝试使用一种方法访问列表,但是无法识别列表的名称,为什么?

public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();

        List<DutyDay> tour = new List<DutyDay>();
        tour.Add(new DutyDay() { Day = "Day 1:" });
        tour.Add(new DutyDay() { Day = "Day 2:" });
        tour.Add(new DutyDay() { Day = "Day 3:" });
        tour.Add(new DutyDay() { Day = "Day 4:" });
        tour.Add(new DutyDay() { Day = "Day 5:" });
        tour.Add(new DutyDay() { Day = "Day 6:" });

        listBoxDutyDays.ItemsSource = tour;
    }

    private void DatePicker_CalendarClosed(object sender, RoutedEventArgs e)
    {
        foreach (DutyDay item in tour)  <-- "tour" is not recognized?!
        {

        }
    }
}

我已经尝试过将列表公开或放在其他括号之间,但是口译员对此并不满意。

很抱歉这个愚蠢的问题,但我仍然很新...

3 个答案:

答案 0 :(得分:3)

您的List变量在Window的构造函数中声明,这意味着只能在该构造函数中访问。

因此,将此变量tour设置为全局变量,然后可以在整个类中对其进行访问。

喜欢

public partial class MainWindow: Window
{
    List<DutyDay> tour = new List<DutyDay>();

    public MainWindow()
    {
        InitializeComponent();

        //Your other stuff here.
    }

    private void DatePicker_CalendarClosed(object sender, RoutedEventArgs e)
    {
        foreach (DutyDay item in tour)  <-- Now its recognized
        {

        }
    }
}

您可以了解有关本地和全局变量here

的更多信息

答案 1 :(得分:2)

您需要使Tour成为实例成员而不是局部变量,因为它在其他方法中没有作用域

public partial class MainWindow : Window
{
    private List<DutyDay> tour = new List<DutyDay>();

    ...

进一步阅读

Classes (C# Programming Guide

Members (C# Programming Guide)

Fields (C# Programming Guide)

答案 2 :(得分:2)

您只需要在全局范围内声明它即可访问它。

尝试这个

public partial class MainWindow : Window
{
    List<DutyDay> tour = new List<DutyDay>(); // it is declared as global
    public MainWindow()
    {
        InitializeComponent();

        //List<DutyDay> tour = new List<DutyDay>(); It Is declared as local
        tour.Add(new DutyDay() { Day = "Day 1:" });
        tour.Add(new DutyDay() { Day = "Day 2:" });
        tour.Add(new DutyDay() { Day = "Day 3:" });
        tour.Add(new DutyDay() { Day = "Day 4:" });
        tour.Add(new DutyDay() { Day = "Day 5:" });
        tour.Add(new DutyDay() { Day = "Day 6:" });

        listBoxDutyDays.ItemsSource = tour;
    }

    private void DatePicker_CalendarClosed(object sender, RoutedEventArgs e)
    {
        foreach (DutyDay item in tour)  <-- "tour" is not recognized?!
        {

        }
    }
}