C# 中标名单';t显示它';内容

C# 中标名单';t显示它';内容,c#,list,button,windows-phone-8,C#,List,Button,Windows Phone 8,我想制作一个应用程序,显示当前正在营业的商店。每个商店都有名称、工作时间和类别。我制作了一个包含每个商店及其属性的列表,但是当我使用foreach方法时,它不会显示其中任何一个。。。你知道问题出在哪里吗?还是另一种解决方法 class Shop { public string name; public DayOfWeek day{ get; set; } public TimeSpan start{ get; set; } public TimeSpan en

我想制作一个应用程序,显示当前正在营业的商店。每个商店都有名称、工作时间和类别。我制作了一个包含每个商店及其属性的列表,但是当我使用foreach方法时,它不会显示其中任何一个。。。你知道问题出在哪里吗?还是另一种解决方法

 class Shop
 {
    public string name;
    public DayOfWeek day{ get; set; }
    public TimeSpan start{ get; set; }
    public TimeSpan end{ get; set; }
    public string address{ get; set; }
    public string category{ get; set; }




    public Shop(string name, DayOfWeek day, TimeSpan start, TimeSpan end, string address, string category)
        {
        name = this.name;
        day = this.day;
        start = this.start;
        end = this.end;
        address = this.address;
        category = this.category;
        }
    }


    public openshops()
    {
        List<Shop> openShop = new List<Shop>();
        openShop.Add(new Shop("ill forno", DayOfWeek.Tuesday, new TimeSpan(18, 0, 0), new TimeSpan(00, 0, 0), "ermoupoli", "pizza"));
        openShop.Add(new Shop("Η ΣΥΡΑ", DayOfWeek.Sunday, new TimeSpan(12, 0, 0), new TimeSpan(00, 0, 0), "ermoupoli", "pizza"));
        openShop.Add(new Shop("ΠΙΤΑΚΙ", DayOfWeek.Tuesday, new TimeSpan(19, 30, 0), new TimeSpan(00, 30, 0), "ermoupoli", "souvlaki"));

        this.InitializeComponent();


        DayOfWeek today = DateTime.Today.DayOfWeek;
        TimeSpan now = DateTime.Now.TimeOfDay;
        if (today == DayOfWeek.Friday)
        {
            foreach (Shop shop in openShop)
            {
                if ((now > shop.start) && (now < shop.end))
                {
                    Button btn = new Button();
                    btn.Content = shop.name;
                    myStackPanel.Children.Add(btn);
                }

            }
        }
    }
class商店
{
公共字符串名称;
公共DayOfWeek日{get;set;}
公共时间跨度开始{get;set;}
公共时间跨度结束{get;set;}
公共字符串地址{get;set;}
公共字符串类别{get;set;}
公共商店(字符串名称、DayOfWeek day、TimeSpan开始、TimeSpan结束、字符串地址、字符串类别)
{
name=this.name;
day=此日期;
start=this.start;
结束=这个。结束;
地址=这个地址;
category=this.category;
}
}
公共露天商店()
{
List openShop=new List();
添加(新商店(“ill forno”,星期二,星期二,新时间跨度(18,0,0),新时间跨度(00,0,0),“ermoupoli”,“pizza”);
添加(新商店(“Η∑ΫΡΑ”,星期日,新时间跨度(12,0,0),新时间跨度(00,0,0),“ermoupoli”,“pizza”);
openShop.Add(新商店(“二楼”,星期二,星期二,新时间跨度(19,30,0),新时间跨度(00,30,0),“ermoupoli”,“souvlaki”);
this.InitializeComponent();
DayOfWeek today=DateTime.today.DayOfWeek;
TimeSpan now=DateTime.now.TimeOfDay;
如果(今天==星期五)
{
foreach(openShop中的店铺)
{
如果((现在>店铺开始)和&(现在<店铺结束))
{
按钮btn=新按钮();
btn.Content=shop.name;
myStackPanel.Children.Add(btn);
}
}
}
}

您正在反转构造函数中的设置逻辑:

您应该这样设置成员:

public Shop(string name, DayOfWeek day, TimeSpan start, TimeSpan end, string address, string category)
    {
    this.name = name;
    this.day = day;
    this.start = start;
    this.end = end;
    this.address = address;
    this.category = category;
    }

您正在反转构造函数中的设置逻辑:

您应该这样设置成员:

public Shop(string name, DayOfWeek day, TimeSpan start, TimeSpan end, string address, string category)
    {
    this.name = name;
    this.day = day;
    this.start = start;
    this.end = end;
    this.address = address;
    this.category = category;
    }
您正在将参数值设置为类中未实例化的变量

关键词

这个

用于引用当前对象实例

此外,根据惯例,属性名称应为Pascal大小写,因此如果将代码重新格式化为:

class Shop
{
//public string name; //This one should have getters and setters too, fields shouldn't be exposed.
public string Name { get; set; }
public DayOfWeek Day{ get; set; }
public TimeSpan Start{ get; set; }
public TimeSpan End{ get; set; }
public string Address{ get; set; }
public string Category{ get; set; }




public Shop(string name, DayOfWeek day, TimeSpan start, TimeSpan end, string address, string category)
    {
    this.Name = name;
    this.Day = day;
    this.Start = start;
    this.End = end;
    this.Address = address;
    this.Category = category;
    }
}
一切都会好起来的

关于公约的参考:

关于公开类字段的参考:

您正在将参数值设置为类中未实例化的变量

关键词

这个

用于引用当前对象实例

此外,根据惯例,属性名称应为Pascal大小写,因此如果将代码重新格式化为:

class Shop
{
//public string name; //This one should have getters and setters too, fields shouldn't be exposed.
public string Name { get; set; }
public DayOfWeek Day{ get; set; }
public TimeSpan Start{ get; set; }
public TimeSpan End{ get; set; }
public string Address{ get; set; }
public string Category{ get; set; }




public Shop(string name, DayOfWeek day, TimeSpan start, TimeSpan end, string address, string category)
    {
    this.Name = name;
    this.Day = day;
    this.Start = start;
    this.End = end;
    this.Address = address;
    this.Category = category;
    }
}
一切都会好起来的

关于公约的参考:

关于公开类字段的参考:

除了修复如何设置属性外,还存在开始和结束时间问题

openShop.Add(new Shop("ill forno", DayOfWeek.Tuesday, new TimeSpan(18, 0, 0), new TimeSpan(00, 0, 0), "ermoupoli", "pizza"));
openShop.Add(new Shop("Η ΣΥΡΑ", DayOfWeek.Sunday, new TimeSpan(12, 0, 0), new TimeSpan(00, 0, 0), "ermoupoli", "pizza"));
openShop.Add(new Shop("ΠΙΤΑΚΙ", DayOfWeek.Tuesday, new TimeSpan(19, 30, 0), new TimeSpan(00, 30, 0), "ermoupoli", "souvlaki"));
这些
Shop
对象的开始时间将大于结束时间,因此此
if
语句

if ((now > shop.start) && (now < shop.end))

除了修复如何设置属性外,还存在开始和结束时间问题

openShop.Add(new Shop("ill forno", DayOfWeek.Tuesday, new TimeSpan(18, 0, 0), new TimeSpan(00, 0, 0), "ermoupoli", "pizza"));
openShop.Add(new Shop("Η ΣΥΡΑ", DayOfWeek.Sunday, new TimeSpan(12, 0, 0), new TimeSpan(00, 0, 0), "ermoupoli", "pizza"));
openShop.Add(new Shop("ΠΙΤΑΚΙ", DayOfWeek.Tuesday, new TimeSpan(19, 30, 0), new TimeSpan(00, 30, 0), "ermoupoli", "souvlaki"));
这些
Shop
对象的开始时间将大于结束时间,因此此
if
语句

if ((now > shop.start) && (now < shop.end))

正在调用openshops()吗?如果是,您能显示调用它的代码吗?另外,我很好奇为什么调用
InitializeComponent()
,如果该类不继承表单或其他内容。openshops是我创建的新页面的名称,并且openshops.xaml.cs中的代码默认存在:public openshops(){this.InitializeComponent();is openshops()被调用?如果是,你能显示调用它的代码吗?另外,我很好奇,如果这个类不是从表单或其他东西继承的,为什么会调用
InitializeComponent()
。openshops是我创建的新页面的名称,openshops.xaml.cs中的代码默认存在:public openshops(){this.InitializeComponent();我很高兴我能帮助你我很高兴我能帮助你哦,我明白了,我应该写(24,0,0)…谢谢你!:@KatDale是的,(24,0,0)将是一天中最好的独家上界。(0,0,0)假设你将这些值设置为
start
end
的可接受范围,那么你的
if
应该是
if(now>=shop.start&&now
哦,我明白了,而不是(00,0,0)我应该写的(24,0,0)…谢谢!:@KatDale是的,(24,0,0)将是一天中某个时间的一个好的独占上限。(0,0,0)将是一个包含的下限。假设您将这些值设置为
start
end
的可接受范围,那么您的
if
可能应该是
if(now>=shop.start&&now