提问者:小点点

在if-statement中交换变量有比这更好的方法吗?


我正在编写一个小的C#控制台应用程序,我想知道是否有方法来改进这部分代码(特别是如何使它遵守“不要重复自己”的原则)。 我的应用程序在这种结构下也很好用,但我不喜欢它的样子。

if (rows % 2 == 0)
{
    evenCell = '#';
    oddCell = '.';
}
else
{
    evenCell = '.';
    oddCell = '#';
}

我是个新手,所以我可能错过了一些明显的东西。 提前谢谢!


共2个答案

匿名用户

也许这样简短的版本更好:

(rows % 2 == 0) ? (evenCell = '#'; oddCell = '.';) : ( evenCell = '.';  oddCell = '#');

匿名用户

您可以尝试条件运算符?:

var evenCell = rows % 2 == 0 ? '#' : '.';
var oddCell = rows % 2 == 0 ? '.' : '#';

它较短,但在本例中,您要计算行%2表达式两次

您还可以使用具有元组模式的C#8switch表达式

(char evenCell, char oddCell) result = (rows % 2) switch
{
    0 => ('#', '.'),
    _ => ('.', '#')
};