gpt4 book ai didi

c# - 如何轻松比较超过 2 个数组参数的长度?

转载 作者:太空狗 更新时间:2023-10-30 00:18:24 26 4
gpt4 key购买 nike

我有一个对象,它有 4 个数组参数,它们的长度都应该相同。

public Foo(
int a,
int b,
type1[] arr1,
type2[] arr2,
type3[] arr3,
type4[] arr4
){ /* ... */ }

我想在构造函数中确保所有这些数组的长度相同,但我显然做不到

if (!(arr1.Length == arr2.Length == arr3.Length == arr4.Length))

所以我去了

if (!(arr1.Length == arr2.Length && arr2.Length == arr3.Length && 
arr3.Length == arr4.Length))

但这看起来并不是特别吸引人,如果我删除其中一个数组或其他内容,也不会很清楚地进行更改。

我认为一定有一种很好的方法可以使用 LINQ 在它们的集合上执行此操作,但我的数组显然不是可枚举的。然后我有了创意(可能很傻),我想我可以用长度初始化一个哈希集并检查它的长度是否为 1。是否有标准/更好的方法来检查多个数组长度是否相等或者是我的 && 方法尽我所能?

最佳答案

写一个辅助方法怎么样?

public static class Arrays
{
public static bool AreAllTheSameLength(params Array[] arrays)
{
return arrays.All(a => a.Length == arrays[0].Length);
}
}

你可以这样调用它:

if (!Arrays.AreAllTheSameLength(arr1, arr2, arr3, arr4))
{
// Throw or whatever.
}

或者如果你通常使用反转的 bool 条件,提供相反的方法可能更具可读性:

public static class Arrays
{
public static bool HaveDifferingLengths(params Array[] arrays)
{
return arrays.Any(a => a.Length != arrays[0].Length);
}
}

...

if (Arrays.HaveDifferingLengths(arr1, arr2, arr3, arr4))
{
// Throw or whatever.
}

关于c# - 如何轻松比较超过 2 个数组参数的长度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37385382/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com