在C#中是否有表示小于且大于的速记方式?

8
这个有简写吗:
bool b = (x > 0) && (x < 5);

类似这样:

bool b = 0 < x < 5;

在 C# 中?

4
不行,你只能这样写:bool b = 0 < x && x < 5; - Matthew Watson
@Robben_Ford_Fan_boy 使用扩展方法将在调用站点添加超过4个字符(仅添加“&&”只会添加4个字符)。 - Matthew Watson
1
这实际上是“shorthand”(简写)的一种。在C#中,你还可以使用Enumerable.Range(1,4).Contains(x) - Shaharyar
4
我不建议用O(N)的解决方案来解决一个O(1)的问题... - Matthew Watson
1
同意这个“缺陷”。我只是想提供另一种实现方式。这不是最好的方法,所以我选择评论而不是回答。 - Shaharyar
显示剩余2条评论
3个回答

9
不行。但是你可以去掉括号:
bool b = 0 < x && x < 5

或者玩数学:
bool b = x*x < 5*x

2
您IP地址为143.198.54.68,由于运营成本限制,当前对于免费用户的使用频率限制为每个IP每72小时10次对话,如需解除限制,请点击左下角设置图标按钮(手机用户先点击左上角菜单按钮)。 - Bathsheba
2
当然,我只是为了好玩写的。我总是使用第一种方法。 - omikad
1
谢谢。我使用括号来增加可读性。而且,如果我使用不等式,我需要解决它才能理解其含义,这样就不太易读了。谢谢。 :) - Michael Haddad
@NathanCooper:就我个人而言,我认为过多的圆括号是令人困惑和烦人的。但我从事科学图书馆的工作,所以我准备成为例外群体的一部分,而不是普通群体的一部分。 - Bathsheba
在这里我要反驳一下自己,需要注意的是 0 < x & x < 5 由于 &&& 在优先级表中相差很远,所以行为会有很大不同! - Bathsheba
显示剩余4条评论

5
最新的C#允许这种模式:
    var counter = Random.Shared.Next(0,5);
    if (counter is > 0 and < 5)
    {
      //Do logic
    }

0
一个与 LINQ 相关的解决方案,不一定更短但更易读:
bool b = new[] { 1, 2, 3, 4 }.Contains(x);

这对于OP帖子中的示例有效,但问题是关于“小于和大于”的通用速记符号。你如何处理bool b = (x > 212) && (x < 45872); - Lars Kristensen
@LarsKristensen - 然后您可以使用类似 Enumerable.Range(212+1, 45872-212-1) 的东西。 - w.b
3
可以,但那样就不是速记版了。 - Lars Kristensen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接