是否有更短的测试方法:
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/