小编JL0*_*0PD的帖子

switch 表达式中的多个语句:C# 8

Switch 表达式是在 C# 8 中引入的。代码库中有很多地方可以用这种新风格重写。

例如,我有一些代码,用于从字节流中解析数据包:

switch (command)
{
    case Command.C1:
        return new P1();
    case Command.C2:
        return new P2();
    default:
        stream.Position++;
        return null;
}
Run Code Online (Sandbox Code Playgroud)

问题是 - 它不能转换为像这样的 switch 表达式

return command switch
{
    Command.C1 => new P1(),
    Command.C3 => new P2(),
    _ => { stream.Position++; return null; }
};
Run Code Online (Sandbox Code Playgroud)

我想到的第一件事是使用 a Func<>,它编译:

return command switch
{
    Command.C1 => new P1(),
    Command.C3 => new P2(),
    _ => new Func<AbstractPacket>(() => { stream.Position++; return null; })()
};
Run Code Online (Sandbox Code Playgroud)

F# 已经允许在每个分支中包含多个语句的代码:

match command …
Run Code Online (Sandbox Code Playgroud)

c# c#-8.0 switch-expression

12
推荐指数
2
解决办法
3382
查看次数

标签 统计

c# ×1

c#-8.0 ×1

switch-expression ×1