我想要一个比较方法,它接受两个对象并返回它们是否相等。
在方法内部,我区分了不同的数据类型,以便对对象应用适当的比较方法。
问题是,我移交了两个数组(例如 int[])并想现在使用SequenceEqual()
,所以我必须将对象更改为可以SequenceEqual()
正确应用于它们的一些通用序列/列表/数组。
目前我不知道如何将数据类型正确地更改为通用的东西。
AnIEnumerable<object>
会有方法SequenceEqual()
,但如果我这样做,source
并且test
是null
。
public static bool Compare(this object o1, object o2)
{
if (o1 is Array && o2 is Array)
{
// special array handling
IEnumerable<object> source = o1 as IEnumerable<object>;
IEnumerable<object> test = o2 as IEnumerable<object>;
// this fails now, because source and test are null.
return source.SequenceEqual(test);
}
else
{
return o1.Equals(o2);
}
}
Compare()
是对象的扩展方法,所以我这样做是为了调用它:
int[] a = new int[] { 1, 2, 3 };
int[] b = new int[] { 1, 2, 3 };
a.Compare(b);
我必须做什么才能将两个对象(即数组)视为数组以便我可以使用SequenceEqual()
?