有比这更好的在 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 = '#');
我正在编写一个小型 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 = '#');