C# 获取当前工作日并运行代码的更有效方法?

C# 获取当前工作日并运行代码的更有效方法?,c#,windows-phone-8,performance,C#,Windows Phone 8,Performance,我这里有一段效率极低的代码,它完成了一项相当简单的工作——检测一周中的哪一天,并用字符串设置一组文本框。代码运行得很好,但我认为有更好的方法可以做到这一点 if (DateTime.Now.DayOfWeek == DayOfWeek.Monday) { time7.Text = "TUESDAY"; time8.Text = "WEDNESDAY";

我这里有一段效率极低的代码,它完成了一项相当简单的工作——检测一周中的哪一天,并用字符串设置一组文本框。代码运行得很好,但我认为有更好的方法可以做到这一点

if (DateTime.Now.DayOfWeek == DayOfWeek.Monday)
                {
                    time7.Text = "TUESDAY";
                    time8.Text = "WEDNESDAY";
                    time9.Text = "THURSDAY";
                    time10.Text = "FRIDAY";
                    time11.Text = "SATURDAY";
                    time12.Text = "SUNDAY";
                    time13.Text = "MONDAY";
                }
                if (DateTime.Now.DayOfWeek == DayOfWeek.Tuesday)
                {
                    time7.Text = "WEDNESDAY";
                    time8.Text = "THURSDAY";
                    time9.Text = "FRIDAY";
                    time10.Text = "SATURDAY";
                    time11.Text = "SUNDAY";
                    time12.Text = "MONDAY";
                    time13.Text = "TUESDAY";
                }
                if (DateTime.Now.DayOfWeek == DayOfWeek.Wednesday)
                {
                    time7.Text = "THURSDAY";
                    time8.Text = "FRIDAY";
                    time9.Text = "SATURDAY";
                    time10.Text = "SUNDAY";
                    time11.Text = "MONDAY";
                    time12.Text = "TUESDAY";
                    time13.Text = "WEDNESDAY";
                }
                if (DateTime.Now.DayOfWeek == DayOfWeek.Thursday)
                {
                    time7.Text = "FRIDAY";
                    time8.Text = "SATURDAY";
                    time9.Text = "SUNDAY";
                    time10.Text = "MONDAY";
                    time11.Text = "TUESDAY";
                    time12.Text = "WEDNESDAY";
                    time13.Text = "THURSDAY";
                }
                if (DateTime.Now.DayOfWeek == DayOfWeek.Friday)
                {
                    time7.Text = "SATURDAY";
                    time8.Text = "SUNDAY";
                    time9.Text = "MONDAY";
                    time10.Text = "TUESDAY";
                    time11.Text = "WEDNESDAY";
                    time12.Text = "THURSDAY";
                    time13.Text = "FRIDAY";
                }
                if (DateTime.Now.DayOfWeek == DayOfWeek.Saturday)
                {
                    time7.Text = "SUNDAY";
                    time8.Text = "MONDAY";
                    time9.Text = "TUESDAY";
                    time10.Text = "WEDNESDAY";
                    time11.Text = "THURSDAY";
                    time12.Text = "FRIDAY";
                    time13.Text = "SATURDAY";
                }
                if (DateTime.Now.DayOfWeek == DayOfWeek.Sunday)
                {
                    time7.Text = "MONDAY";
                    time8.Text = "TUESDAY";
                    time9.Text = "WEDNESDAY";
                    time10.Text = "THURSDAY";
                    time11.Text = "FRIDAY";
                    time12.Text = "SATURDAY";
                    time13.Text = "SUNDAY";
                }
var textboxs=新列表{time7,time8}//添加其他
var current=DateTime.Now;
foreach(文本框中的变量tb)
{
当前=当前添加天数(1);
tb.Text=current.DayOfWeek.ToString().ToUpper();
}
类似于此,您还可以使用其他变体,如
for(var i=0…
loop),但您已经明白了这一点

此外,您还可以使用
MVVM
模式绑定到
文本框
,这更容易

var textboxs=新列表{time7,time8}//添加其他
var current=DateTime.Now;
foreach(文本框中的变量tb)
{
当前=当前添加天数(1);
tb.Text=current.DayOfWeek.ToString().ToUpper();
}
类似于此,您还可以使用其他变体,如
for(var i=0…
loop),但您已经明白了这一点

此外,您还可以使用
MVVM
模式绑定到
文本框
,这更容易

这个怎么样:

void YourFunction()
{
    // a list of your day-names: since it seems that you are maintaining some old code, I presume that implementation of localization is out of question, so you can use a list..
    var dateNames = new List<string>() { "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday" };

    // a list of your textboxes that hold names of days
    var tbs = new List<TextBox>() { textBox1, textBox2, textBox3, textBox4, textBox5, textBox6, textBox7 };

    // current day
    var x = (int)DateTime.Now.DayOfWeek;

    shift(dateNames, tbs, x);
}

void shift(List<string> dates, List<TextBox> tbs, int x)
{
    for (int i = 0; i < x; i++)
    {
        dates.Insert(7, dates[0]);
        dates.Remove(dates[0]);
    }

    for (int i = 0; i < dates.Count; i++)
    {
        tbs[i].Text = dates[i];
    }
}
void YourFunction()
{
//你的名字列表:因为你似乎在维护一些旧代码,我认为本地化的实现是不可能的,所以你可以使用一个列表。。
var dateNames=新列表(){“星期一”、“星期二”、“星期三”、“星期四”、“星期五”、“星期六”、“星期日”};
//包含日期名称的文本框列表
var tbs=new List(){textBox1,textBox2,textBox3,textBox4,textBox5,textBox6,textBox7};
//今日
var x=(int)DateTime.Now.DayOfWeek;
班次(日期名称,待定,x);
}
无效班次(列表日期、列表tbs、int x)
{
对于(int i=0;i
它并不“好”,但比你现在拥有的更容易维护

希望这有帮助。

这个怎么样:

void YourFunction()
{
    // a list of your day-names: since it seems that you are maintaining some old code, I presume that implementation of localization is out of question, so you can use a list..
    var dateNames = new List<string>() { "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday" };

    // a list of your textboxes that hold names of days
    var tbs = new List<TextBox>() { textBox1, textBox2, textBox3, textBox4, textBox5, textBox6, textBox7 };

    // current day
    var x = (int)DateTime.Now.DayOfWeek;

    shift(dateNames, tbs, x);
}

void shift(List<string> dates, List<TextBox> tbs, int x)
{
    for (int i = 0; i < x; i++)
    {
        dates.Insert(7, dates[0]);
        dates.Remove(dates[0]);
    }

    for (int i = 0; i < dates.Count; i++)
    {
        tbs[i].Text = dates[i];
    }
}
void YourFunction()
{
//你的名字列表:因为你似乎在维护一些旧代码,我认为本地化的实现是不可能的,所以你可以使用一个列表。。
var dateNames=新列表(){“星期一”、“星期二”、“星期三”、“星期四”、“星期五”、“星期六”、“星期日”};
//包含日期名称的文本框列表
var tbs=new List(){textBox1,textBox2,textBox3,textBox4,textBox5,textBox6,textBox7};
//今日
var x=(int)DateTime.Now.DayOfWeek;
班次(日期名称,待定,x);
}
无效班次(列表日期、列表tbs、int x)
{
对于(int i=0;i
它并不“好”,但比你现在拥有的更容易维护

希望这对我有帮助。

这对我很有用:

var labels =
    typeof(DayOfWeek).GetEnumNames()
        .Concat(typeof(DayOfWeek).GetEnumNames())
        .Skip((int)DateTime.Now.DayOfWeek + 1)
        .Take(7)
        .Select(x => x.ToUpperInvariant())
        .ToArray();

 time7.Text = labels[0];
 time8.Text = labels[1];
 time9.Text = labels[2];
 time10.Text = labels[3];
 time11.Text = labels[4];
 time12.Text = labels[5];
 time13.Text = labels[6];
这对我很有用:

var labels =
    typeof(DayOfWeek).GetEnumNames()
        .Concat(typeof(DayOfWeek).GetEnumNames())
        .Skip((int)DateTime.Now.DayOfWeek + 1)
        .Take(7)
        .Select(x => x.ToUpperInvariant())
        .ToArray();

 time7.Text = labels[0];
 time8.Text = labels[1];
 time9.Text = labels[2];
 time10.Text = labels[3];
 time11.Text = labels[4];
 time12.Text = labels[5];
 time13.Text = labels[6];
1) 创建文本框数组

2) 将动态数字(介于0到6之间)设置为天

3) 然后通过循环函数填充文本框

for(i=0;i<=6:i++)
{textbox[i].text=dynamic_function_in_form_load(i);}
for(i=0;i1)创建文本框数组

2) 将动态数字(介于0到6之间)设置为天

3) 然后通过循环函数填充文本框

for(i=0;i<=6:i++)
{textbox[i].text=dynamic_function_in_form_load(i);}

for(i=0;iVerbose和易出错是的,但不是低效的。如果可能的话,我仍然希望避免这两件事。例如time7.Text=DateTime.Today.AddDays(1)。DayOfWeek.ToString().ToUpper(),time8.Text=DateTime.Today.addDayOfWeek.ToString().ToUpper()应该有用吗?没有什么不同,只是稍微修改了一下,可以做同样的事情。@AD.Net的awnser完美地解决了这个问题。冗长且容易出错是的,但效率不低。如果可能的话,我仍然希望避免这两件事。例如time7.Text=DateTime.Today.AddDays(1.DayOfWeek.ToString().ToUpper(),time8.Text=DateTime.Today.AddDays(2).DayOfWeek.ToString().ToUpper()应该可以工作吗?其实没有什么不同,只是稍微修改了一下,做同样的事情。@AD.Net的awnser完美地解决了这个问题。工作正常,完全不冗长,这就是问题所在。工作正常,完全不冗长,这就是问题所在。