【问题标题】:Is there a shorthand for smaller than AND greater than, in C#?在 C# 中是否有小于和大于的简写?
【发布时间】:2016-10-09 20:33:10
【问题描述】:

这个有简写吗:

bool b = (x > 0) && (x < 5);

类似:

bool b = 0 < x < 5;

在 C# 中?

【问题讨论】:

  • 不;你只需要做bool b = 0 &lt; x &amp;&amp; x &lt; 5;
  • 写一个扩展方法有用吗?
  • 实际上是shothand。您可以在 C# 中拥有的另一件事Enumerable.Range(1,4).Contains(x)
  • @Shaharyar 我不会推荐 O(N) 解决方案来解决 O(1) 问题...
  • 同意这里的flaws。我只是想提供另一种实现它的方法。这不是最好的方式,这就是我评论而不是答案的原因。

标签: c# expression shorthand


【解决方案1】:

不。但是你可以去掉括号:

bool b = 0 < x && x < 5

或玩数学:

bool b = x*x < 5*x

【讨论】:

  • 加一:我喜欢第二个。但是,它可能会溢出类型(或环绕整数类型,这将是一场灾难),所以我们都知道第一个是唯一真正可行的选择。
  • 当然,我写它只是为了好玩。我总是使用第一种方法
  • @Bathsheba。我删除了我的评论(因为我把第二个选项误认为是一个严肃的建议),但我说的是括号使它更清楚。没错,我知道运算符优先级是如何工作的,而括号仍然只是让它在页面上更好地阅读。
  • 谢谢。我使用括号是为了便于阅读。另外,如果我使用不等式,我需要实际解决它以理解它的含义,这不是很可读。谢谢。 :)
  • @NathanCooper:就我个人而言,我发现多余的括号令人困惑和烦人。但我在科学图书馆工作,所以我准备成为例外组的一员,而不是普通组。
【解决方案2】:

一个 LINQ 解决方案,不是更短,而是更易读:

bool b = new[] { 1, 2, 3, 4 }.Contains(x);

【讨论】:

  • 这适用于 OP 帖子中的示例,但问题是关于“小于和大于”的 general 简写符号。你会如何处理bool b = (x &gt; 212) &amp;&amp; (x &lt; 45872);
  • @LarsKristensen - 那么你可以使用类似Enumerable.Range(212+1, 45872-212-1)
  • 是的,但它不是速记版本。
猜你喜欢
  • 2010-10-12
  • 2020-04-29
  • 1970-01-01
  • 1970-01-01
  • 2016-03-05
  • 2011-07-18
  • 2016-10-18
  • 2017-02-28
  • 2020-08-14
相关资源
最近更新 更多