假设我在经典C#中有以下内容:
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的方式来做,而不重复"small“的值。
发布于 2019-12-14 05:22:44
您可以通过添加一个when子句来尝试以下代码
public string SizeCs8(byte b)
=> b switch
{
var x when x == 0 || x == 1 => "small",
_ =>"big",
};发布于 2019-12-14 05:31:17
我认为第一个(较长的)版本更可取。紧凑的代码很好,但如果它编译到更多的字节就不好了。
但是为什么不丢弃switch语句呢?这个更紧凑:
public string SizeCs8(byte b) => (b <= 1) ? "small" : "big";https://stackoverflow.com/questions/59329943
复制相似问题