在Java中,Arrays.equals()允许轻松比较两个基本数组的内容(所有基本类型都可以使用重载).
C#中有这样的东西吗?是否有任何"神奇"的方法来比较C#中两个数组的内容?
是否可以使用除了两个int数组列表,如下所示:
List<int[]> a = new List<int[]>(){ new int[]{3,4,5}, new int[]{7,8,9}, new int[]{10,11,12} };
List<int[]> b = new List<int[]>(){ new int[]{6,7,9}, new int[]{3,4,5}, new int[]{10,41,12} };
var c = a.Except(b);
Run Code Online (Sandbox Code Playgroud)
并且考虑{3,4,5}不存在可枚举的c?当然我试过了,这个没用.有没有像Except一样高效的解决方案?或者甚至更好,更快?
我有这个多维数组:
int[][] x;
Run Code Online (Sandbox Code Playgroud)
所以,对于我所拥有的每个职位:
x[0] = [10,10,10,10,10]
x[1] = [10,10,10,10,10]
x[2] = [10,10,10,10,10]
x[3] = [5,5,5]
x[4] = [5,5,5]
x[5] = [10,5,5,5]
x[6] = [10,5,5,5]
x[7] = [5,5,5]
Run Code Online (Sandbox Code Playgroud)
我想要这样的团体:
z[0] = 3 x [10,10,10,10,10]
z[1] = 3 x [5,5,5]
z[2] = 2 x [10,5,5,5]
Run Code Online (Sandbox Code Playgroud)
或者如果可能的话:
y[0] = 3 | 5x10
y[1] = 3 | 3x5
y[2] = 2 | 1x10, 3x5
Run Code Online (Sandbox Code Playgroud) 我有一种情况,我需要一个这种类型的密钥字典,但它似乎没有找到等效的密钥.
Dictionary<Tuple<int[], int>, object> cache = new Dictionary<Tuple<int[], int>, object>();
cache.Add(Tuple.Create(new int[]{1}, 1), new object());
Assert.That(cache.ContainsKey(Tuple.Create(new int[] { 1 }, 1))); // This fails
Run Code Online (Sandbox Code Playgroud)
我已经通过使用a来测试它Tuple<int, int>,它似乎工作得很好,但在我的情况下,我真的需要某种Tuple<int[], int>类型的键,它不起作用.
还有其他替代方案吗?
我试图检查数组列表是否包含反向顺序的数组,如果没有,添加它们:
var faclist = new List<int[]>();
var factors = new int[2] {i, j};
if (!faclist.Contains(factors.Reverse()))
{
faclist.Add(factors);
}
Run Code Online (Sandbox Code Playgroud)
但是,即使存在具有相反因素的数组,此代码也始终不正确.