在C#中比较3个数组长度的好方法是什么?

3

我有三个数组。我需要检查这些数组是否具有相同的长度。有没有聪明而好的方法来比较它?


7
"a.Length == b.Lenght && b.Length == c.Length" 的意思是 "a的长度等于b的长度,并且b的长度等于c的长度。" - digEmAll
9个回答

10

为什么不呢?

if (array1.Length == array2.Length && array1.Length == array3.Length)
{
}

6
如果你有N个数组,你可以这样做:
var a1 = new int[] { 1, 2, 3 };
var a2 = new int[] { 1, 2, 3 };
var a3 = new int[] { 1, 2, 3 };
var arr = new[] { a1, a2, a3 }; // group them all in one array

// check if all arrays have the same length as the first
var test = arr.All(x => x.Length == a1.Length);

这非常适合比较许多列表,并且也可以轻松检查数组是否为null,例如arr.All(x => x != null && x.Length == a1.Length) - ColmanJ

4

bool EqualLengths = Arr1.Length == Arr2.Length && Arr2.Length == Arr3.Length;

这段代码判断三个数组的长度是否相等。尽管不算特别聪明或美观,但我认为没有更好的方法了!

4
object[] a, b, c;
return (a.Length == b.Length && b.Length == c.Length);

对象没有 Length 属性。 - Charles Lambert
我明白你在那里做了什么。 - Charles Lambert

2
比起 if (array1.Length == array2.Length && array1.Length == array3.Length) 更简单的方法是什么?

1
bool success = false;

var arr1 = new[] { "1", "2", "3" };
var arr2 = new[] { "1", "2", "3" };
var arr3 = new[] { "1", "2", "3" };

if (arr1.Length == arr2.Length)
{
  if (arr2.Length == arr3.Length)
  {
     success = true;
  }
}

0

简单

 if (array.Length == array1.Length &&  array1.Length== array2.Length)
{
 // do something
}

你不能连接两个 == 运算符。第一个 == 的结果是一个布尔值,因此不能与整数进行比较。 - digEmAll
不起作用。你最终会比较 array1.Length == true,这没有意义。 - RB.
array.Length == array2.Length 是布尔类型,即使这是合法语法,也不能与array3.Length进行比较。 - Martijn

0
// compares all arrays passed in for equal length.
// requires at least two arrays so that comparison can be made, 
// otherwise this operation would not matter
bool AreEqualLength(Array a1, Array a2, params Array[] arrs) {
  if (a1.Length != a2.Length) return false;
  foreach(var arr in arrs)
    if (arr.Length != a1.Length)
      return false;
  return true;
}

-1
        int[] a1, a2, a3;
        a1 = new int[3];
        a2 = new int[1];
        a3 = new int[1];

        bool equalLength = (a1.Length == (a2.Length & a3.Length));

2
我认为进行位比较不太易读。当我阅读该行时,很难看出实际发生了什么。 - Martijn
a1.Length和a2.Length可以是2,a3.Length可以是3,这将返回true。-1 - spender
1
@Martijn:这个问题不是关于可读性,而是关于比较三个值的聪明方式。 - Babar

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