c# 判断两个数组是否相等的方法

[复制链接]
查看11 | 回复0 | 2009-8-14 09:35:54 | 显示全部楼层 |阅读模式
用个循环语句string a[];string b[];bool bo;for(int i=0;i {0}", ArrayEqals(s1, s2));
Console.WriteLine("s2 == s3 ---> {0}", ArrayEqals(s2, s3));
int[] n1 = { 1, 2, 3 };
int[] n2 = { 1, 2, 3 };
int[] n3 = { 2, 2, 3 };
Console.WriteLine("n1 == n2 ---> {0}", ArrayEqals(n1, n2));
Console.WriteLine("n2 == n3 ---> {0}", ArrayEqals(n2, n3));
Console.ReadKey();
}
public static bool ArrayEqals(T[] array1, T[] array2)
{
if (array1 == array2) return true;
if (array1 == null || array2 == null) return false;
if (array1.Length != array1.Length) return false;
Type equatable = typeof(T).GetInterface("IEquatable`1");
if (equatable != null)
{
MethodInfo equalMethod = equatable.GetMethod( "Equals", BindingFlags.Instance | BindingFlags.Public );
for (int i = 0; i < array1.Length; i++)
{
if (!(bool)equalMethod.Invoke(array1, new object[] { array2 })) return false;
}
return true;
}
Type comparable = typeof(T).GetInterface("IComparable`1");
if (comparable != null)
{
MethodInfo compareMethod = comparable.GetMethod("CompareTo", BindingFlags.Instance | BindingFlags.Public);
for (int i = 0; i < array1.Length; i++)
{
if (!(bool)compareMethod.Invoke(array1, new object[] { array2 })) return false;
}
return true;
}
for (int i = 0; i < array1.Length; i++)
{
if (!array1.Equals(array2)) return false;
}
return true;
}
}}
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行