您的位置:首页 > 其它

如何比较数组的“大小”?

2011-05-17 17:08 197 查看
有这样2个数组,如何比较他们的大小呢?

View Code

public abstract class EqualityComparer<T> : IEqualityComparer, IEqualityComparer<T>
{
public static EqualityComparer<T> Default { get; }
}


这样就可以用这种方式判断了:

Console.WriteLine((arr1 as IStructuralEquatable).Equals(arr2, StructuralComparisons.StructuralEqualityComparer));
Console.WriteLine((arr1 as IStructuralEquatable).Equals(arr2, EqualityComparer<int>.Default));


如果2个数组长度不一样。肯定返回是false。否则,逐个比较数组里的元素。如果没发现不同,返回true。

还有一个问题:我想知道哪个数组大小怎么办?

NET4.0引入了一个新的接口IStructuralComparable,并且Array也实现了此接口。接口定义如下:

public interface IStructuralComparable
{
int CompareTo(object other, IComparer comparer);
}


比较“集合对象大小比较”也有2种方式:

1)通过StructuralComparisons.StructuralComparer获取。

2)通过Comparer<T>.Default属性获取针对特定类型的“集合对象大小比较器”对象。

所以可以写下如下代码:

Console.WriteLine((arr1 as IStructuralComparable).CompareTo(arr2, StructuralComparisons.StructuralComparer));
Console.WriteLine((arr1 as IStructuralComparable).CompareTo(arr2,Comparer.Default));


如果 arr1>arr2 得到“1”,arr1<arr2 得到 “-1”,等于的话是“0”。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: