C#是否有与Elixir的cond语句功能类似的多条件判断语法?
C# 8.0及更高版本支持使用switch表达式实现和Elixir cond完全对等的多布尔条件判断逻辑,无需编写冗余的嵌套if/else。
对应你给出的Elixir示例,等价的C#实现如下:
int guess = 46; int numberOfGuesses = 3; var output = (numberOfGuesses, guess) switch { ( > 5, _ ) => "Too many guesses! You lose.", ( _, 46 ) => "You guessed 46!", ( _, 42 ) => "You guessed 42!", _ => "I give up." }; Console.WriteLine(output);
运行结果和Elixir版本完全一致:
You guessed 46!
这种实现和Elixir cond的特性完全匹配:
- 各分支判断条件可以完全独立,支持不同变量的混合校验,不需要绑定同一个判断对象
- 末尾的
_通配符对应cond里的true兜底分支,所有前置条件未命中时自动触发 - 整体为表达式结构,可以直接将判断结果赋值给变量,代码结构紧凑,没有多层
if/else的缩进冗余问题
如果使用低于8.0的C#版本,也可以用传统if/else if结构实现同等逻辑,仅写法相对繁琐:
int guess = 46; int numberOfGuesses = 3; string output; if (numberOfGuesses > 5) { output = "Too many guesses! You lose."; } else if (guess == 46) { output = "You guessed 46!"; } else if (guess == 42) { output = "You guessed 42!"; } else { output = "I give up."; } Console.WriteLine(output);
内容的提问来源于stack exchange,提问作者Brian Kessler
相关产品推荐
相关产品推荐

