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

时间:2018-08-26 18:40:34

标签: c# loops

是否有关于如何优化的建议,并且在需要的情况下可以将其缩短:

io.on('connection', (socket) => {
var roomName
var firstPlayer
var secondPlayer
var connectedClients

socket.on('roomName', (obj) => {
    roomName = obj.name
    socket.join(roomName)
    connectedClients = Object.keys(io.sockets.adapter.rooms[roomName].sockets)

    if( connectedClients.length > 1 ){
        firstPlayer = connectedClients[0]
        secondPlayer = connectedClients[1]
        // sending the icon decision
        socket.to(firstPlayer).emit( 'iconDecide', { iAmX: true } )
        socket.to(secondPlayer).emit( 'iconDecide', { iAmX: false } )
    }
})

socket.on('move', (obj) => {
    socket.to(roomName).emit('receiveMove', obj)
}) })

4 个答案:

答案 0 :(得分:8)

这只是一行。使用string numeric formatting

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

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

答案 1 :(得分:5)

只需使用String.Format syntax

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

答案 2 :(得分:0)

指定每个组件的numeric format应该就足够了:

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

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

答案 3 :(得分:0)

通常我们不想与HourMinutesecond 分开工作(想像一下,执行一个非常复杂的操作会多么复杂)简单的操作,例如增加5小时,59分钟和47秒),但是为此专门为此设置了TimeSpan

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

   ...

   TimerLabel.Text = period.ToString();

如果HourMinutesecond表示时间,而不是期间使用DateTime:< / p>

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

   ...

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