Guid.CompareTo Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Сравнивает этот экземпляр с указанным объектом или Guid возвращает указание их относительных значений.
Перегрузки
| Имя | Описание |
|---|---|
| CompareTo(Guid) |
Сравнивает этот экземпляр с указанным Guid объектом и возвращает указание их относительных значений. |
| CompareTo(Object) |
Сравнивает этот экземпляр с указанным объектом и возвращает указание их относительных значений. |
CompareTo(Guid)
- Исходный код:
- Guid.cs
- Исходный код:
- Guid.cs
- Исходный код:
- Guid.cs
- Исходный код:
- Guid.cs
- Исходный код:
- Guid.cs
Сравнивает этот экземпляр с указанным Guid объектом и возвращает указание их относительных значений.
public:
virtual int CompareTo(Guid value);
public int CompareTo(Guid value);
abstract member CompareTo : Guid -> int
override this.CompareTo : Guid -> int
Public Function CompareTo (value As Guid) As Integer
Параметры
- value
- Guid
Объект для сравнения с этим экземпляром.
Возвращаемое значение
Подписанный номер, указывающий относительные значения этого экземпляра и value.
| Возвращаемое значение | Описание |
|---|---|
| Отрицательное целое число | Этот экземпляр меньше value.
|
| Нуля | Этот экземпляр равен value.
|
| Положительное целое число | Этот экземпляр больше value.
|
Реализации
Примеры
В следующем примере метод вызывается CompareTo(Guid) для сравнения значения GUID с двумя аналогичными значениями GUID.
using System;
public class Example
{
public static void Main()
{
Guid mainGuid = Guid.Parse("01e75c83-c6f5-4192-b57e-7427cec5560d");
unchecked {
Guid guid2 = new Guid(0x01e75c83, (short) 0xc6f5,
0x4192,
new Byte[] { 0xb5, 0x7e, 0x74, 0x27, 0xce, 0xc5, 0x56, 0x0c} );
Guid guid3 = Guid.Parse("01e75c84-c6f5-4192-b57e-7427cec5560d");
Console.WriteLine("{0} {1:F} {2}", mainGuid,
(Comparison) mainGuid.CompareTo(guid2), guid2);
Console.WriteLine("{0} {1:F} {2}", mainGuid,
(Comparison) mainGuid.CompareTo(guid3), guid3);
}
}
private enum Comparison
{ LessThan = -1, Equals = 0, GreaterThan = 1 }
}
// The example displays the following output:
// 01e75c83-c6f5-4192-b57e-7427cec5560d GreaterThan 01e75c83-c6f5-4192-b57e-7427cec5560c
// 01e75c83-c6f5-4192-b57e-7427cec5560d LessThan 01e75c84-c6f5-4192-b57e-7427cec5560d
open System
type Comparison =
| ``Less Than`` = -1
| Equals = 0
| ``Greater Than`` = 1
let mainGuid =
Guid.Parse "01e75c83-c6f5-4192-b57e-7427cec5560d"
let guid2 = Guid(0x01e75c83, 0xc6f5s, 0x4192s, [| 0xb5uy; 0x7euy; 0x74uy; 0x27uy; 0xceuy; 0xc5uy; 0x56uy; 0x0cuy |])
let guid3 =
Guid.Parse("01e75c84-c6f5-4192-b57e-7427cec5560d")
printfn $"{mainGuid} {mainGuid.CompareTo guid2 |> enum<Comparison> :F} {guid2}"
printfn $"{mainGuid} {mainGuid.CompareTo guid3 |> enum<Comparison> :F} {guid3}"
// The example displays the following output:
// 01e75c83-c6f5-4192-b57e-7427cec5560d Greater Than 01e75c83-c6f5-4192-b57e-7427cec5560c
// 01e75c83-c6f5-4192-b57e-7427cec5560d Less Than 01e75c84-c6f5-4192-b57e-7427cec5560d
Module Example
Public Sub Main()
Dim mainGuid As Guid = Guid.Parse("01e75c83-c6f5-4192-b57e-7427cec5560d")
Dim guid2 As New Guid(&h01e75c83,
BitConverter.ToInt16(new Byte() { &hf5, &hc6 }, 0),
&h4192,
new Byte() { &hb5, &h7e, &h74, &h27, &hce, &hc5, &h56, &h0c} )
Dim guid3 As Guid = Guid.Parse("01e75c84-c6f5-4192-b57e-7427cec5560d")
Console.WriteLine("{0} {1:F} {2}", mainGuid,
CType(mainGuid.CompareTo(guid2), Comparison), guid2)
Console.WriteLine("{0} {1:F} {2}", mainGuid,
CType(mainGuid.CompareTo(guid3), Comparison), guid3)
End Sub
Private Enum Comparison As Integer
LessThan = -1
Equals = 0
GreaterThan = 1
End Enum
End Module
' The example displays the following output:
' 01e75c83-c6f5-4192-b57e-7427cec5560d GreaterThan 01e75c83-c6f5-4192-b57e-7427cec5560c
' 01e75c83-c6f5-4192-b57e-7427cec5560d LessThan 01e75c84-c6f5-4192-b57e-7427cec5560d
Комментарии
Метод CompareTo сравнивает идентификаторы GUID, как если бы они были предоставлены конструктору Guid(Int32, Int16, Int16, Byte[]) , как показано ниже.
Он сравнивает UInt32 значения и возвращает результат, если они не равны. Если они равны, он выполняет следующее сравнение.
Он сравнивает первые UInt16 значения и возвращает результат, если они не равны. Если они равны, он выполняет следующее сравнение.
Он сравнивает второе UInt16 значение и возвращает результат, если они не равны. Если они равны, он выполняет следующее сравнение.
Если выполняется сравнение байтов по байтам следующих восьми Byte значений. При обнаружении первой неравной пары он возвращает результат. В противном случае возвращается значение 0, чтобы указать, что два Guid значения равны.
Обратите внимание, что последние восемь байтов отображаются в строковом Guid представлении в обратном порядке от низкого байта до высокого байта. Например, в строковом Guid представлении значения "01e75c83-c6f5-4192-b57e-7427cec5560d", последние восемь байтов являются "b57e-7427cec5560d". Другими словами, последние восемь байтов сравниваются по байтовой основе слева направо, начиная с 0xb5.
Если два идентификатора GUID имеют равные значения для компонента, метод сравнивает следующий компонент. Когда он находит компонент, значения которого не равны, он возвращает результат.
Этот метод реализует System.IComparable<T> интерфейс и выполняет немного лучше, Guid.CompareTo чем метод, так как он не должен преобразовать value параметр в Guid значение.
Применяется к
CompareTo(Object)
- Исходный код:
- Guid.cs
- Исходный код:
- Guid.cs
- Исходный код:
- Guid.cs
- Исходный код:
- Guid.cs
- Исходный код:
- Guid.cs
Сравнивает этот экземпляр с указанным объектом и возвращает указание их относительных значений.
public:
virtual int CompareTo(System::Object ^ value);
public int CompareTo(object? value);
public int CompareTo(object value);
abstract member CompareTo : obj -> int
override this.CompareTo : obj -> int
Public Function CompareTo (value As Object) As Integer
Параметры
- value
- Object
Объект для сравнения или null.
Возвращаемое значение
Подписанный номер, указывающий относительные значения этого экземпляра и value.
| Возвращаемое значение | Описание |
|---|---|
| Отрицательное целое число | Этот экземпляр меньше value.
|
| Нуля | Этот экземпляр равен value.
|
| Положительное целое число | Этот экземпляр больше valueили value больше null.
|
Реализации
Исключения
value не Guidявляется .
Примеры
В следующем примере атрибут используется GuidAttribute для назначения GUID классу. Он извлекает значение этого GUID путем вызова Attribute.GetCustomAttribute метода и передачи Value свойства возвращаемого GuidAttribute объекта методу Parse . Затем он сравнивает этот GUID с массивом значений.
using System;
using System.Runtime.InteropServices;
[Guid("936DA01F-9ABD-4d9d-80C7-02AF85C822A8")]
public class Example
{
public static void Main()
{
GuidAttribute guidAttr = (GuidAttribute) Attribute.GetCustomAttribute(typeof(Example),
typeof(GuidAttribute));
Guid guidValue = Guid.Parse(guidAttr.Value);
Object[] values = { null , 16,
Guid.Parse("01e75c83-c6f5-4192-b57e-7427cec5560d"),
guidValue };
foreach (var value in values) {
try {
Console.WriteLine("{0} and {1}: {2}", guidValue,
value == null ? "null" : value,
guidValue.CompareTo(value));
}
catch (ArgumentException) {
Console.WriteLine("Cannot compare {0} and {1}", guidValue,
value == null ? "null" : value);
}
}
}
}
// The example displays the following output:
// 936da01f-9abd-4d9d-80c7-02af85c822a8 and null: 1
// Cannot compare 936da01f-9abd-4d9d-80c7-02af85c822a8 and 16
// 936da01f-9abd-4d9d-80c7-02af85c822a8 and 01e75c83-c6f5-4192-b57e-7427cec5560d: 1
// 936da01f-9abd-4d9d-80c7-02af85c822a8 and 936da01f-9abd-4d9d-80c7-02af85c822a8: 0
open System
open System.Runtime.InteropServices
[<Guid("936DA01F-9ABD-4d9d-80C7-02AF85C822A8")>]
type Example = class end
let guidAttr =
Attribute.GetCustomAttribute(typeof<Example>, typeof<GuidAttribute>) :?> GuidAttribute
let guidValue =
Guid.Parse guidAttr.Value
let values: obj[] =
[| null; 16
Guid.Parse "01e75c83-c6f5-4192-b57e-7427cec5560d"
guidValue |]
for value in values do
try
printfn $"{guidValue} and %A{value}: {guidValue.CompareTo value}"
with :? ArgumentException ->
printfn $"Cannot compare {guidValue} and %A{value}"
// The example displays the following output:
// 936da01f-9abd-4d9d-80c7-02af85c822a8 and <null>: 1
// Cannot compare 936da01f-9abd-4d9d-80c7-02af85c822a8 and 16
// 936da01f-9abd-4d9d-80c7-02af85c822a8 and 01e75c83-c6f5-4192-b57e-7427cec5560d: 1
// 936da01f-9abd-4d9d-80c7-02af85c822a8 and 936da01f-9abd-4d9d-80c7-02af85c822a8: 0
Imports System.Runtime.InteropServices
<Guid("936DA01F-9ABD-4d9d-80C7-02AF85C822A8")>
Module Example
Public Sub Main()
Dim guidAttr As GuidAttribute = CType(Attribute.GetCustomAttribute(GetType(Example),
GetType(GuidAttribute)), GuidAttribute)
Dim guidValue As Guid = Guid.Parse(guidAttr.Value)
Dim values() As Object = { Nothing, 16,
Guid.Parse("01e75c83-c6f5-4192-b57e-7427cec5560d"),
guidValue }
For Each value In values
Try
Console.WriteLine("{0} and {1}: {2}", guidValue,
If(value Is Nothing, "null", value),
guidValue.CompareTo(value))
Catch e As ArgumentException
Console.WriteLine("Cannot compare {0} and {1}", guidValue,
If(value Is Nothing, "null", value))
End Try
Next
End Sub
End Module
' The example displays the following output:
' 936da01f-9abd-4d9d-80c7-02af85c822a8 and null: 1
' Cannot compare 936da01f-9abd-4d9d-80c7-02af85c822a8 and 16
' 936da01f-9abd-4d9d-80c7-02af85c822a8 and 01e75c83-c6f5-4192-b57e-7427cec5560d: 1
' 936da01f-9abd-4d9d-80c7-02af85c822a8 and 936da01f-9abd-4d9d-80c7-02af85c822a8: 0
Комментарии
Параметр value должен быть null или экземпляром Guid; в противном случае создается исключение. Любой экземпляр Guid, независимо от его значения, считается больше, чем null.
Метод CompareTo сравнивает идентификаторы GUID, как если бы они были предоставлены конструктору Guid , как показано ниже.
Он сравнивает Int32 значения и возвращает результат, если они не равны. Если они равны, он выполняет следующее сравнение.
Он сравнивает первые Int16 значения и возвращает результат, если они не равны. Если они равны, он выполняет следующее сравнение.
Он сравнивает второе Int16 значение и возвращает результат, если они не равны. Если они равны, он выполняет следующее сравнение.
Если выполняется сравнение байтов по байтам следующих восьми Byte значений. При обнаружении первой неравной пары он возвращает результат. В противном случае возвращается значение 0, чтобы указать, что два Guid значения равны.
Если два идентификатора GUID имеют равные значения для компонента, метод сравнивает следующий компонент. Когда он находит компонент, значения которого не равны, он возвращает результат.
Обратите внимание, что последние восемь байтов отображаются в строковом Guid представлении в обратном порядке от низкого байта до высокого байта. Например, в строковом Guid представлении значения "01e75c83-c6f5-4192-b57e-7427cec5560d", последние восемь байтов являются "b57e-7427cec5560d".