Guid.CompareTo Метод

Определение

Сравнивает этот экземпляр с заданным объектом или объектом типа Guid и возвращает значение, указывающее, как соотносятся значения этих объектов.Compares this instance to a specified object or Guid and returns an indication of their relative values.

Перегрузки

CompareTo(Guid)

Сравнивает этот экземпляр с заданным объектом Guid и возвращает значение, указывающее, как соотносятся значения этих объектов.Compares this instance to a specified Guid object and returns an indication of their relative values.

CompareTo(Object)

Сравнивает этот экземпляр с заданным объектом и возвращает значение, указывающее, как соотносятся значения этих объектов.Compares this instance to a specified object and returns an indication of their relative values.

CompareTo(Guid)

Сравнивает этот экземпляр с заданным объектом Guid и возвращает значение, указывающее, как соотносятся значения этих объектов.Compares this instance to a specified Guid object and returns an indication of their relative values.

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

Объект, сравниваемый с этим экземпляром.An object to compare to this instance.

Возвраты

Знаковое число, представляющее относительные значения этого экземпляра и параметра value.A signed number indicating the relative values of this instance and value.

Возвращаемое значениеReturn value ОписаниеDescription
Отрицательное целое числоA negative integer Этот экземпляр меньше параметра value.This instance is less than value.
НульZero Этот экземпляр и параметр value равны.This instance is equal to value.
Положительное целое числоA positive integer Этот экземпляр больше параметра value.This instance is greater than value.

Реализации

Примеры

В следующем примере вызывается метод CompareTo(Guid) для сравнения значения GUID с двумя похожими значениями GUID.The following example calls the CompareTo(Guid) method to compare a GUID value with two similar GUID values.

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
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[]), следующим образом:The CompareTo method compares the GUIDs as if they were values provided to the Guid(Int32, Int16, Int16, Byte[]) constructor, as follows:

  • Он сравнивает значения UInt32 и возвращает результат, если они не равны.It compares the UInt32 values, and returns a result if they are unequal. Если они равны, выполняется следующее сравнение.If they are equal, it performs the next comparison.

  • Он сравнивает первые значения UInt16 и возвращает результат, если они не равны.It compares the first UInt16 values, and returns a result if they are unequal. Если они равны, выполняется следующее сравнение.If they are equal, it performs the next comparison.

  • Он сравнивает значения второго UInt16 и возвращает результат, если они не равны.It compares the second UInt16 values, and returns a result if they are unequal. Если они равны, выполняется следующее сравнение.If they are equal, it performs the next comparison.

  • Если выполняет побайтовое сравнение следующих восьми Byte значений.If performs a byte-by-byte comparison of the next eight Byte values. При обнаружении первой неравной пары она возвращает результат.When it encounters the first unequal pair, it returns the result. В противном случае он возвращает 0, чтобы указать, что значения двух Guid равны.Otherwise, it returns 0 to indicate that the two Guid values are equal.

Обратите внимание, что последние восемь байт отображаются в строковом представлении Guid в обратном порядке, от младших до старших байт.Note that the final eight bytes appear in the string representation of a Guid in reverse order, from low byte to high byte. Например, в строковом представлении значения Guid "01e75c83-c6f5-4192-b57e-7427cec5560d" последние восемь байт — "b57e-7427cec5560d".For example, in the string representation of the Guid value "01e75c83-c6f5-4192-b57e-7427cec5560d", the final eight bytes are "b57e-7427cec5560d." Иными словами, последние восемь байтов сравниваются по побайтовой основе слева направо, начиная с 0xb5.In other words, the final eight bytes are compared on a byte-by-byte basis from left to right starting with 0xb5.

Если два идентификатора GUID имеют равные значения для компонента, метод сравнивает следующий компонент.If two GUIDs have equal values for a component, the method compares the next component. При обнаружении компонента, значения которого не равны, возвращается результат.When it finds a component whose values are unequal, it returns the result.

Этот метод реализует интерфейс System.IComparable<T> и работает немного лучше, чем метод Guid.CompareTo, поскольку ему не нужно преобразовывать параметр value в значение Guid.This method implements the System.IComparable<T> interface and performs slightly better than the Guid.CompareTo method because it does not have to convert the value parameter to a Guid value.

CompareTo(Object)

Сравнивает этот экземпляр с заданным объектом и возвращает значение, указывающее, как соотносятся значения этих объектов.Compares this instance to a specified object and returns an indication of their relative values.

public:
 virtual int CompareTo(System::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.An object to compare, or null.

Возвраты

Знаковое число, представляющее относительные значения этого экземпляра и параметра value.A signed number indicating the relative values of this instance and value.

Возвращаемое значениеReturn value ОписаниеDescription
Отрицательное целое числоA negative integer Этот экземпляр меньше параметра value.This instance is less than value.
НульZero Этот экземпляр и параметр value равны.This instance is equal to value.
Положительное целое числоA positive integer Этот экземпляр больше параметра value или параметр value равен значению null.This instance is greater than value, or value is null.

Реализации

Исключения

value не является объектом Guid.value is not a Guid.

Примеры

В следующем примере атрибут GuidAttribute используется для назначения GUID классу.The following example uses the GuidAttribute attribute to assign a GUID to a class. Он получает значение этого идентификатора GUID путем вызова метода Attribute.GetCustomAttribute и передачи свойства Value возвращенного GuidAttribute объекта в метод Parse.It retrieves the value of this GUID by calling the Attribute.GetCustomAttribute method and passing the Value property of the returned GuidAttribute object to the Parse method. Затем он сравнивает этот GUID с массивом значений.Then it compares that GUID with an array of values.

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
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; в противном случае создается исключение.The value parameter must be null or an instance of Guid; otherwise, an exception is thrown. Любой экземпляр Guid, независимо от его значения, считается больше null.Any instance of Guid, regardless of its value, is considered greater than null.

Метод CompareTo сравнивает идентификаторы GUID, как если бы они были значениями, предоставленными конструктору Guid, следующим образом:The CompareTo method compares the GUIDs as if they were values provided to the Guid constructor, as follows:

  • Он сравнивает значения Int32 и возвращает результат, если они не равны.It compares the Int32 values, and returns a result if they are unequal. Если они равны, выполняется следующее сравнение.If they are equal, it performs the next comparison.

  • Он сравнивает первые значения Int16 и возвращает результат, если они не равны.It compares the first Int16 values, and returns a result if they are unequal. Если они равны, выполняется следующее сравнение.If they are equal, it performs the next comparison.

  • Он сравнивает значения второго Int16 и возвращает результат, если они не равны.It compares the second Int16 values, and returns a result if they are unequal. Если они равны, выполняется следующее сравнение.If they are equal, it performs the next comparison.

  • Если выполняет побайтовое сравнение следующих восьми Byte значений.If performs a byte-by-byte comparison of the next eight Byte values. При обнаружении первой неравной пары она возвращает результат.When it encounters the first unequal pair, it returns the result. В противном случае он возвращает 0, чтобы указать, что значения двух Guid равны.Otherwise, it returns 0 to indicate that the two Guid values are equal.

Если два идентификатора GUID имеют равные значения для компонента, метод сравнивает следующий компонент.If two GUIDs have equal values for a component, the method compares the next component. При обнаружении компонента, значения которого не равны, возвращается результат.When it finds a component whose values are unequal, it returns the result.

Обратите внимание, что последние восемь байт отображаются в строковом представлении Guid в обратном порядке, от младших до старших байт.Note that the final eight bytes appear in the string representation of a Guid in reverse order, from low byte to high byte. Например, в строковом представлении значения Guid "01e75c83-c6f5-4192-b57e-7427cec5560d" последние восемь байт — "b57e-7427cec5560d".For example, in the string representation of the Guid value "01e75c83-c6f5-4192-b57e-7427cec5560d", the final eight bytes are "b57e-7427cec5560d."

Применяется к