是否有更短的测试方法:
if (!((a == b) && (a == c) && (a == d) && (a == e) && (a == f)))
Run Code Online (Sandbox Code Playgroud)
我最后写了一个让我这样做的方法
if (!AllEqual(new[] { a, b, c, d, e, f }))
Run Code Online (Sandbox Code Playgroud)
这感觉更好,并且更具可读性,但我想知道框架中是否有某些东西可以做到这一点?
Jon*_*eet 13
嗯,首先,您可以使用参数数组使其更简单:
public static bool AllEqual<T>(params T[] values)
...
if (AllEqual(a, b, c, d, e, f))
{
...
}
Run Code Online (Sandbox Code Playgroud)
老实说,我认为你不会发现任何比这更简单的东西.我没有在其他地方或框架中看到这个.好吧,我想你可以在LINQ做一件事:
if (new { a, b, c, d, e, f }.Distinct().Count() == 1)
Run Code Online (Sandbox Code Playgroud)
但那太可怕了:)
稍微更高效的版本是:
if (!(new { a, b, c, d, e, f }).Distinct().Skip(1).Any()))
Run Code Online (Sandbox Code Playgroud)
...一旦找到第二个不同的元素,它将返回false.只有6个元素我不认为值得担心:)
| 归档时间: |
|
| 查看次数: |
1373 次 |
| 最近记录: |