Comparer<T>.IComparer.Compare(Object, Object) 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
比较两个对象并返回一个值,该值指示一个对象小于、等于还是大于另一个对象。
virtual int System.Collections.IComparer.Compare(System::Object ^ x, System::Object ^ y) = System::Collections::IComparer::Compare;
int IComparer.Compare (object x, object y);
abstract member System.Collections.IComparer.Compare : obj * obj -> int
override this.System.Collections.IComparer.Compare : obj * obj -> int
Function Compare (x As Object, y As Object) As Integer Implements IComparer.Compare
参数
- x
- Object
要比较的第一个对象。
- y
- Object
要比较的第二个对象。
返回
一个有符号整数,指示 x
和 y
的相对值,如下表所示。
值 | 含义 |
---|---|
小于零 | x 小于 y 。
|
零 | x 等于 y 。
|
大于零 | x 大于 y 。
|
实现
例外
示例
以下示例演示如何使用 IComparer.Compare 方法比较两个 对象。 此示例是为 类提供的更大示例的 Comparer<T> 一部分。
// This explicit interface implementation
// compares first by the length.
// Returns -1 because the length of BoxA
// is less than the length of BoxB.
BoxLengthFirst LengthFirst = new BoxLengthFirst();
Comparer<Box> bc = (Comparer<Box>) LengthFirst;
Box BoxA = new Box(2, 6, 8);
Box BoxB = new Box(10, 12, 14);
int x = LengthFirst.Compare(BoxA, BoxB);
Console.WriteLine();
Console.WriteLine(x.ToString());
' This explicit interface implementation
' compares first by the length.
' Returns -1 because the length of BoxA
' is less than the length of BoxB.
Dim LengthFirst As New BoxLengthFirst()
Dim bc As Comparer(Of Box) = CType(LengthFirst, Comparer(Of Box))
Dim BoxA As New Box(2, 6, 8)
Dim BoxB As New Box(10, 12, 14)
Dim x As Integer = LengthFirst.Compare(BoxA, BoxB)
Console.WriteLine()
Console.WriteLine(x.ToString())
注解
此方法是 方法的 Compare(T, T) 包装器,因此 obj
必须强制转换为由当前实例的泛型参数 T
指定的类型。 如果无法将其强制转换为 T
, ArgumentException 则会引发 。
null
允许与任何引用类型进行比较,并且不会生成异常。 排序时, null
被视为小于任何其他对象。
调用方说明
Compare(T, T) 和 Equals(T, T) 的行为在区域性敏感度和区分大小写方面有所不同。
对于字符串比较,StringComparer建议使用 类。Comparer<String>
类的属性 StringComparer 返回预定义实例,这些实例使用区分区域性和区分大小写的不同组合执行字符串比较。 区分大小写和区分区域性在同一 StringComparer 实例的成员之间是一致的。
有关特定于区域性的比较的详细信息,请参阅 System.Globalization 命名空间和 全球化和本地化。