C# 完整if/else语句与条件运算符

C# 完整if/else语句与条件运算符,c#,if-statement,ternary-operator,conditional-operator,C#,If Statement,Ternary Operator,Conditional Operator,可能的重复项: 大家好 关于不同的if/else语句,我有一个非常简单的问题 除了编写更少的代码外,使用条件运算符与完整的if/else语句相比还有其他好处吗 在使用它时,是否有性能提高、编译代码减少或其他任何有利于我的东西 谢谢你的帮助 Marko不要专注于写更少的代码。。。关注代码,最终使您的可读性更强 有时,if语句更具可读性。有时,条件运算符更具可读性。我喜欢条件运算符,因为它在计算一个逻辑值的不同方式(例如,基于客户年龄的折扣)方面有意义。不过,我不喜欢以复杂的方式使用它——在有意

可能的重复项:

大家好

关于不同的if/else语句,我有一个非常简单的问题

除了编写更少的代码外,使用条件运算符与完整的if/else语句相比还有其他好处吗

在使用它时,是否有性能提高、编译代码减少或其他任何有利于我的东西

谢谢你的帮助

Marko

不要专注于写更少的代码。。。关注代码,最终使您的可读性更强

有时,
if
语句更具可读性。有时,条件运算符更具可读性。我喜欢条件运算符,因为它在计算一个逻辑值的不同方式(例如,基于客户年龄的折扣)方面有意义。不过,我不喜欢以复杂的方式使用它——在有意义的地方使用完整的if/else并没有什么错

还值得记住空合并运算符。。。因此,不是:

string shipTo = customer.ShippingAddress != null 
              ? customer.ShippingAddress : customer.BillingAddress;
你可以用

string shipTo = customer.ShippingAddress ?? customer.BillingAddress;
同样,它只在某些情况下有用——但在那些情况下它真的很方便

除了编写更少的代码外,与完整的if/else语句相比,使用三元运算符还有其他好处吗

更好的可读性,在某些情况下。。。我想就这些

在使用它时,是否有性能提高、编译代码减少或其他任何对我有益的事情

不,没什么大不了的。我想它通常会编译成相同的IL


因此,最终,您应该只基于可读性进行选择。当编写完整的if/else更具可读性时,就这样做。如果这是一个非常简单、易读的三元表达式,那就去吧。

谢谢你给我看了副本,我在键入答案时没有找到副本,我想我是在寻找所有错误的东西!条件运算符和if语句编译为完全相同的CIL代码:条件分支指令。(模重排,因为一个是表达式,另一个是语句。)谢谢-这就是我需要知道的全部。我一直在阅读一些代码,发现一些开发人员在不应该使用三元运算符的地方使用了三元运算符,从而使代码过于复杂。将在8分钟内接受@Marko:学究的快速注释,操作符的名称是条件操作符。这是一个三元运算符,因为它有三个操作数,但这只是运算符的一个属性,而不是对它的描述。太棒了-谢谢@Jon。我还在等你的书,毫无疑问,读完后我会有更多的问题!谢谢