【发布时间】:2021-05-27 16:41:00
【问题描述】:
我想优化以下代码。下面怎么改写
if (cmd.InvoiceRun.BlancoInvoice)
{
commands.Add(new GenerateBlancoInvoiceCommand(invoice, cmd.Owner, cmd.CreatedAtUtc));
}
else
{
commands.Add(new GenerateInvoiceCommand(invoice, cmd.Owner, cmd.CreatedAtUtc));
}
到 if/else 语句到三元语句?
我试过了
cmd.InvoiceRun.BlancoInvoice
? commands.Add(new GenerateInvoiceCommand(invoice, cmd.Owner, cmd.CreatedAtUtc))
: commands.Add(new GenerateBlancoInvoiceCommand(invoice, cmd.Owner, cmd.CreatedAtUtc));
但这不被接受,因为
Only assignment, call, increment, decrement, await expression, and new object expressions can be used as a statement.
我希望这是可能的,我需要在三元运算符之前使用 commands.Add 吗?
【问题讨论】:
-
为什么要将一个非常好的 if/else 重写为三元运算符?
-
使用三元运算符创建对象并使用单个命令。添加调用。但正如@Sweeper 所说 - 这似乎是一个毫无意义的“优化” - 代码很清楚,编译器可能无论如何都会优化它。
-
两个类实现的通用基类或接口是什么?
-
@Sweeper 我喜欢三元语句的紧凑性(3 行而不是 6 行)。事实上,这不是一个主要的优化,我只是好奇它是否可能:)
-
@TimSchmelter 两个命令都继承自同一个基类
InvoiceCommand
标签: c# .net conditional-statements