C# 简化 switch 语句

for*_*umb 0 c# parameter-passing switch-statement .net-6.0 c#-10.0

我可以以某种方式简化这个 switch 语句,因为这两种情况都只使用另一个函数参数做同样的事情吗?

\n
switch (data.Subscriber.Protocol)\n{\n    case "email json":\n        builder.Attachments.Add("O\xc4\x8ditanje.json", CraftAttachment(data));\n        break;\n    case "email text":\n        builder.Attachments.Add("O\xc4\x8ditanje.txt", CraftAttachment(data));\n        break;\n    default:\n        break;\n}\n
Run Code Online (Sandbox Code Playgroud)\n

Ric*_*ing 6

像这样的事情怎么样:

\n
string attachmentName = data.Subscriber.Protocol switch\n{\n    "email json" => "O\xc4\x8ditanje.json",\n    "email text" => "O\xc4\x8ditanje.txt",\n    _ => null\n};\n\nif (attachmentName is not null)\n{\n    builder.Attachments.Add(attachmentName, CraftAttachment(data));\n}\n
Run Code Online (Sandbox Code Playgroud)\n

开关表达式 | C# 参考

\n