【问题标题】:Does c# have a shorthand "something if (condition);" statement?c# 是否有简写“something if (condition);”陈述?
【发布时间】:2016-06-25 03:58:28
【问题描述】:

简单而简短:C# 是否有类似于 Ruby 的简写 if 语句?

return if (condition)

【问题讨论】:

  • 不,但if (condition) return; 的长度相同。
  • return (condition) ? "this value if condition is true" : "this one if condition is false" 呢?
  • @Nitro.de 这是关于有条件地返回,而不是关于根据条件返回不同的值。
  • @Lee 不是长度,而是可读性/表现力。 return if (condition) 从第一个字就清楚表明这一行是为了返回。

标签: c# if-statement shorthand-if


【解决方案1】:

不,它没有。标准方式的长度完全相同,因此可能没有这样的速记方式是合理的。考虑通常的语法:

if (condition) return;

对比一个假设:

return if (condition);

引入这种“反向”语法的一个可能原因是首先表达了主要意图。因为是从左到右的阅读,那么它会更容易理解,从而导致代码更具可读性。


从语言设计的角度来看,使用不同的关键字(例如 when)是有意义的,以防止混淆错误。考虑以下 行代码:

return            // missing ; here
if (condition);   // no warning (except empty 'then' part)

应该写成:

return;           // ; here present
if (condition);   // unreachable code warning here

从节省字符的角度来看,它在begin … end 语言中是有意义的。像这样的构造:

if condition begin
    return;
    end if;

如果写成这样的话,会明显更短并且可能更易读:

return when condition;

【讨论】:

  • 不是长度,而是可读性。 return if (condition) 从第一个字就清楚表明这一行是为了返回。
  • @jj_ 是的,请参阅我的扩展答案。
猜你喜欢
  • 1970-01-01
  • 2012-03-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-18
相关资源
最近更新 更多