c# - 我如何测试多个 bool 值在 C# 中具有相同的值?

标签 c# coding-style

是否有更短的测试方法:

if (!((a == b) && (a == c) && (a == d) && (a == e) && (a == f)))

我最终写了一个方法让我这样做

if (!AllEqual(new[] { a, b, c, d, e, f }))

这感觉更好,可读性更好,但我想知道框架中是否已经有一些东西可以做到这一点?

最佳答案

一方面,您可以使用参数数组来简化它:

public static bool AllEqual<T>(params T[] values)
...


if (AllEqual(a, b, c, d, e, f))
{
    ...
}

老实说,我认为您找不到比这更简单的方法了。我没有在其他任何地方或框架中看到过这个。好吧,我想您可以在 LINQ 中做一件事:

if (new { a, b, c, d, e, f }.Distinct().Count() == 1)

但这太可怕了:)

一个稍微更有效的版本是:

if (!(new { a, b, c, d, e, f }).Distinct().Skip(1).Any()))

... 一旦找到第二个不同的元素,它将返回 false。虽然只有 6 个元素,但我认为这不值得担心 :)

关于c# - 我如何测试多个 bool 值在 C# 中具有相同的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4142004/

相关文章:

javascript - CefSharp 在任何文档加载/处理之前注入(inject) Javascript

c# - SQL Server 序列间隙

Java:构建器模式与逻辑分组对象

css - 我需要将一个远程文件导入到我的 less 文档中

python - 初始化属性或属性的 Pythonic 方法是什么?

c# - 自动数据上下文事务管理

c# - 在 Roslyn 中获取方法调用的基类

c# - 生产服务器上的 SQL Server 2000 间歇性连接异常 - 特定环境问题?

c++ - 你应该在类内还是类外声明枚举?

android - 如何更改所有 ListView 的默认分隔线颜色