c# - C 和 C# 条件语句的更简单语法

标签 c# c syntax conditional-statements

我希望能够像这样比较整数和字符串:

if(a==b==c==d==e)

不幸的是,C# 无法编译它(我不确定 C)。

如果我可以解决这个问题,有什么想法吗?为什么 C# 团队不允许这种更简单的语法? (而不是像 a==b && a==c && a==d && a==e 这样麻烦的东西)。

作为一个单独的查询, if(someValue == (5 || 6 || 7 || 8)) 有什么问题,而不是一直说 someValue==5 || someValue==6 || etc. etc. ?显然,1 个或多个被 .NET 视为“true”,但我认为我们应该用更短的语法替换该范例,以方便代码的阅读和编写。

********* 编辑: 正如有人在评论中所说, a==b==c==d==e 出现问题由于优先级问题而使用 bool 逻辑时(例如: (false==false) == false )。但是,使用整数或字符串时不会出现此类问题。

最佳答案

您基本上需要检查所有变量是否具有相同的值?直到它们是原始类型(int、string、double等),您可以将它们放入不同的集合中,并检查它是否只包含一个元素,如下所示:

var collection = new[] {a,b,c,d,e};
if(collection.Distinct().Count() == 1)
{
    // means a==b==c==e
}

关于c# - C 和 C# 条件语句的更简单语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29432611/

相关文章:

c# - 使用 Entity Framework 6 和 Devart 提供程序在 Mysql 上执行事务回滚时连接关闭

c# - 在 LINQ 中使用 OrderBy 首先是西里尔字母,然后是拉丁字母

c++ - 在 C 或 C++ 中包含 header 的正确方法

c++ - 检查 BOOL 的值是否比更新它更有效?

syntax - 如何在后续 block 中访问 va_list

c# - 我应该重用 FileStream/BinaryWriter 对象吗?

c# - 从保留的 ListBox 中获取选定的项目

c - 用于更新文件的批处理文件脚本

javascript - 赋值语法

ruby - 更惯用的 Ruby 写法是什么?