繁体   English   中英

如何缩短大型if-else场景?

[英]How to shorten a large if-else scenario?

是否有任何关于如何优化的建议,并在以下情况下缩短此时间:

if (secound < 10)
    TimerLabel.Text = $"{Hour}:{Minute}:0{secound}";
if (Minute< 10)
    TimerLabel.Text = $"{Hour}:0{Minute}:{secound}";
if (Hour < 10)
    TimerLabel.Text = $"0{Hour}:{Minute}:{secound}";
if(secound <10 && Minute < 10)
    TimerLabel.Text = $"{Hour}:0{Minute}:0{secound}";
if (secound < 10 && Hour < 10)
    TimerLabel.Text = $"0{Hour}:{Minute}:0{secound}";
if(Minute < 10 && Hour < 10)
    TimerLabel.Text = $"0{Hour}:0{Minute}:{secound}";
if(Hour < 10 && Minute < 10 && secound < 10)
    TimerLabel.Text = $"0{Hour}:0{Minute}:0{secound}";

它只是一行。 使用字符串数字格式

TimerLabel.Text = $"{Hour:D2}:{Minute:D2}:{secound:D2}";

字母 D(格式说明符)后跟一个数值(精度说明符)指示格式代码提供足够的“0”字符来填充所需的空间

只需使用String.Format 语法

TimerLabel.Text = $"{Hour:00}:{Minute:00}:{Second:00}");

指定每个组件的数字格式应该就足够了:

 TimerLabel.Text = $"{Hour:D2}:{Minute:D2}:{secound:D2}";

D2 = 十进制输出,两个字符

通常,我们不希望与工作HourMinutesecond分开(试想一下,有COMLEX它会像添加执行非常简单的操作5小时, 59分钟, 47秒为单位),但随着TimeSpan专门desinged为了这:

   TimeSpan period = new TimeSpan(Hour, Minute, second);

   ...

   TimerLabel.Text = period.ToString();

如果HourMinutesecond表示时间,而不是时间段,请使用DateTime

   DateTime time = DateTime.Today.Add(new TimeSpan(Hour, Minute, second));

   ...

   TimerLabel.Text = time.ToString("HH:mm:ss");

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM