public string Size(byte b)
{
switch (b)
{
case 0:
case 1:
return "small";
default:
return "big";
}
}
C#8开发人员正确认识到语法中存在很多不足之处。因此,在C#8中,我可以像这样紧凑地编写它:
public string SizeCs8(byte b) => b switch { 0 => "small", 1 => "small", _ => "big", };
绝对是一种改进。但是有一件事困扰着我。我必须重复“小”值。以前我没有。我想知道是否可以在不重复值“ small”的情况下以C#8方式进行操作?
when
子句来尝试以下代码段public string SizeCs8(byte b)
=> b switch
{
var x when x == 0 || x == 1 => "small",
_ =>"big",
};
但是为什么不扔switch
语句?这更紧凑:
public string SizeCs8(byte b) => (b <= 1) ? "small" : "big";