C#如何实现ArrayCompare方法判断两个int数组是否包含完全相同元素
C# 数组比较方法ArrayCompare实现方案
完整实现代码
static bool ArrayCompare(int[] i, int[] j) { // 处理空引用边界情况,避免空引用异常 if (ReferenceEquals(i, j)) return true; if (ReferenceEquals(i, null) || ReferenceEquals(j, null)) return false; // 长度不一致直接判定不相等 if (i.Length != j.Length) return false; // 逐索引对比元素 for (int o = 0; o < i.Length; o++) { // 任意位置元素不等直接返回false if (i[o] != j[o]) { return false; } } // 所有校验都通过返回true return true; }
逻辑说明
- 空引用判断:如果两个数组指向同一个对象(包括同时为null),直接返回true;如果仅其中一个为null,直接返回false,避免后续访问
Length属性触发异常 - 长度校验:长度不同的数组必然不相等,直接返回false
- 逐元素对比:按索引逐个对比对应位置的元素,只要存在任意一位元素不同,立刻终止对比返回false
- 最终返回true:只有长度相等、所有位置元素都相等时才会走到该逻辑分支,返回true
如果你能保证调用方法时传入的两个数组都不为null,也可以用基于你原有代码的简化补全版本:
static bool ArrayCompare(int [] i , int [] j) { if (i.Length == j.Length) { for (int o = 0; o < i.Length; o++) { // 补全的对比逻辑 if(i[o] != j[o]) { return false; } } // 所有元素对比完成后才返回true return true; } return false; }
注意:简化版本传入null数组会触发空引用异常
内容的提问来源于stack exchange,提问作者Xu Haiyang
相关产品推荐
相关产品推荐

