不要在C#8开关语法中重复返回值[重复]

问题描述 投票:0回答:1
假设我在经典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方式进行操作?
c# switch-statement c#-8.0
1个回答
2
投票
您可以通过添加when子句来尝试以下代码段

public string SizeCs8(byte b) => b switch { var x when x == 0 || x == 1 => "small", _ =>"big", };


1
投票
我认为第一个(更长)版本是可取的。紧凑的代码不错,但如果编译为更多字节则不好。

但是为什么不扔switch语句?这更紧凑:

public string SizeCs8(byte b) => (b <= 1) ? "small" : "big";

© www.soinside.com 2019 - 2024. All rights reserved.