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

Any ways to swap variables within if-statement better than this?

我正在编写一个小型 C# 控制台应用程序,我想知道是否有办法改进这部分代码(特别是如何使其符合原则 "Don't repeat yourself")。我的应用程序也适用于这种构造,但我不喜欢它的外观。

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

你可以使用 conditional operator ?:

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

它更短,但在这种情况下你计算 rows % 2 表达式两次

您还可以将 C# 8 switch expression 与元组模式一起使用

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

或者只是带有 value tuple 的条件运算符(从 C# 7 开始有效)

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

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

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