gpt4 book ai didi

c# - 在 C# switch 表达式中使用 block ?

转载 作者:行者123 更新时间:2023-12-04 22:17:54 25 4
gpt4 key购买 nike

我找不到解决此问题的文档。 (也许我只是不擅长使用谷歌......)
我的猜测是答案是否定的,但是我不明白文档中在哪里解决了这个问题。
准确地说,我的问题如下。

假设,我想执行这样的事情:

DirectoryInfo someDir = new DirectoryInfo(@".\someDir");
Console.WriteLine($"Would you like to delete the directory {someDir.FullName}?");
string response = Console.ReadLine().ToLower();

response switch
{
"yes" => { someDir.Delete(); ... MoreActions},
_ => DoNothing()
};

我知道我可以通过使用常规 switch 或 if/else 来实现所需的行为,但是我很好奇在这种情况下是否可以使用 switch 表达式。

最佳答案

however I didn't understand where this is addressed in the documentation



这个说的很清楚 here :

There are several syntax improvements here:

  • The variable comes before the switch keyword. The different order makes it visually easy to distinguish the switch expression from the switch statement.
  • The case and : elements are replaced with =>. It's more concise and intuitive.
  • The default case is replaced with a _ discard.
  • The bodies are expressions, not statements.

{ someDir.Delete(); ... MoreActions}不是表达式。

但是,正如他们所说,您可以滥用每个功能:)

您可以使 switch 表达式计算为 Action ,并调用该操作:
Action a = response switch
{
"yes" => () => { ... },
_ => () => { .... }
};
a();

您甚至可以将其简化为单个语句:
(response switch
{
"yes" => (Action)(() => { ... }),
_ => () => { ... }
})();

但不要这样做...

关于c# - 在 C# switch 表达式中使用 block ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59729459/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com