Guid.CompareTo Metoda

Definicja

Porównuje to wystąpienie z określonym obiektem lub Guid zwraca wskazanie ich względnych wartości.Compares this instance to a specified object or Guid and returns an indication of their relative values.

Przeciążenia

CompareTo(Guid)

Porównuje to wystąpienie do określonego Guid obiektu i zwraca wskazanie ich względnych wartości.Compares this instance to a specified Guid object and returns an indication of their relative values.

CompareTo(Object)

Porównuje to wystąpienie z określonym obiektem i zwraca wskazanie ich względnych wartości.Compares this instance to a specified object and returns an indication of their relative values.

CompareTo(Guid)

Porównuje to wystąpienie do określonego Guid obiektu i zwraca wskazanie ich względnych wartości.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

Parametry

value
Guid

Obiekt, który ma zostać porównany z tym wystąpieniem.An object to compare to this instance.

Zwraca

Int32

Liczba ze znakiem wskazująca wartości względne tego wystąpienia i value .A signed number indicating the relative values of this instance and value.

Wartość zwracanaReturn value OpisDescription
Ujemna liczba całkowitaA negative integer To wystąpienie jest mniejsze niż value .This instance is less than value.
ZeroZero To wystąpienie jest równe value .This instance is equal to value.
Dodatnia liczba całkowitaA positive integer To wystąpienie jest większe niż value .This instance is greater than value.

Implementuje

Przykłady

Poniższy przykład wywołuje metodę, CompareTo(Guid) Aby porównać wartość identyfikatora GUID z dwoma podobnymi wartościami identyfikatora 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

Uwagi

CompareToMetoda porównuje identyfikatory GUID tak, jakby były wartościami dostarczonymi do Guid(Int32, Int16, Int16, Byte[]) konstruktora, w następujący sposób:The CompareTo method compares the GUIDs as if they were values provided to the Guid(Int32, Int16, Int16, Byte[]) constructor, as follows:

  • Porównuje UInt32 wartości i zwraca wynik, jeśli są one nierówne.It compares the UInt32 values, and returns a result if they are unequal. Jeśli są równe, wykonuje następne porównanie.If they are equal, it performs the next comparison.

  • Porównuje pierwsze UInt16 wartości i zwraca wynik, jeśli są nierówne.It compares the first UInt16 values, and returns a result if they are unequal. Jeśli są równe, wykonuje następne porównanie.If they are equal, it performs the next comparison.

  • Porównuje drugie UInt16 wartości i zwraca wynik, jeśli są nierówne.It compares the second UInt16 values, and returns a result if they are unequal. Jeśli są równe, wykonuje następne porównanie.If they are equal, it performs the next comparison.

  • Jeśli wykonuje porównanie bajtów po bajcie dla następnych ośmiu Byte wartości.If performs a byte-by-byte comparison of the next eight Byte values. W przypadku napotkania pierwszej pary nierównej zwraca wynik.When it encounters the first unequal pair, it returns the result. W przeciwnym razie zwraca wartość 0, aby wskazać, że dwie Guid wartości są równe.Otherwise, it returns 0 to indicate that the two Guid values are equal.

Należy zauważyć, że Final osiem bajtów pojawia się w ciągu reprezentującym Guid w kolejności odwrotnej, od małego bajtu do dużego bajtu.Note that the final eight bytes appear in the string representation of a Guid in reverse order, from low byte to high byte. Na przykład w reprezentacji ciągu Guid wartości "01e75c83-c6f5-4192-b57e-7427cec5560d" Final osiem bajtów to "b57e-7427cec5560d".For example, in the string representation of the Guid value "01e75c83-c6f5-4192-b57e-7427cec5560d", the final eight bytes are "b57e-7427cec5560d." Innymi słowy, ostatnie osiem bajtów jest porównywane w oparciu o bajt po bajcie od lewej do prawej, zaczynając od 0xb5.In other words, the final eight bytes are compared on a byte-by-byte basis from left to right starting with 0xb5.

Jeśli dwa identyfikatory GUID mają równe wartości dla składnika, Metoda porównuje Następny składnik.If two GUIDs have equal values for a component, the method compares the next component. Po znalezieniu składnika, którego wartości są różne, zwraca wynik.When it finds a component whose values are unequal, it returns the result.

Ta metoda implementuje System.IComparable<T> interfejs i wykonuje nieco lepszą niż metoda, Guid.CompareTo ponieważ nie musi ona konwertować value parametru na Guid wartość.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.

Dotyczy

CompareTo(Object)

Porównuje to wystąpienie z określonym obiektem i zwraca wskazanie ich względnych wartości.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);
public int CompareTo (object value);
abstract member CompareTo : obj -> int
override this.CompareTo : obj -> int
Public Function CompareTo (value As Object) As Integer

Parametry

value
Object

Obiekt do porównania lub null .An object to compare, or null.

Zwraca

Int32

Liczba ze znakiem wskazująca wartości względne tego wystąpienia i value .A signed number indicating the relative values of this instance and value.

Wartość zwracanaReturn value OpisDescription
Ujemna liczba całkowitaA negative integer To wystąpienie jest mniejsze niż value .This instance is less than value.
ZeroZero To wystąpienie jest równe value .This instance is equal to value.
Dodatnia liczba całkowitaA positive integer Wartość tego wystąpienia jest większa niż value lub value równa null .This instance is greater than value, or value is null.

Implementuje

Wyjątki

value nie jest Guid .value is not a Guid.

Przykłady

Poniższy przykład używa atrybutu, GuidAttribute Aby przypisać identyfikator GUID do klasy.The following example uses the GuidAttribute attribute to assign a GUID to a class. Pobiera wartość tego identyfikatora GUID przez wywołanie Attribute.GetCustomAttribute metody i przekazanie Value Właściwości zwróconego GuidAttribute obiektu do Parse metody.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. Następnie porównuje ten identyfikator GUID z tablicą wartości.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

Uwagi

valueParametr musi być null lub wystąpieniem Guid ; w przeciwnym razie jest zgłaszany wyjątek.The value parameter must be null or an instance of Guid; otherwise, an exception is thrown. Każde wystąpienie Guid , niezależnie od jego wartości, jest traktowane jako większe niż null .Any instance of Guid, regardless of its value, is considered greater than null.

CompareToMetoda porównuje identyfikatory GUID tak, jakby były wartościami dostarczonymi do Guid konstruktora, w następujący sposób:The CompareTo method compares the GUIDs as if they were values provided to the Guid constructor, as follows:

  • Porównuje Int32 wartości i zwraca wynik, jeśli są one nierówne.It compares the Int32 values, and returns a result if they are unequal. Jeśli są równe, wykonuje następne porównanie.If they are equal, it performs the next comparison.

  • Porównuje pierwsze Int16 wartości i zwraca wynik, jeśli są nierówne.It compares the first Int16 values, and returns a result if they are unequal. Jeśli są równe, wykonuje następne porównanie.If they are equal, it performs the next comparison.

  • Porównuje drugie Int16 wartości i zwraca wynik, jeśli są nierówne.It compares the second Int16 values, and returns a result if they are unequal. Jeśli są równe, wykonuje następne porównanie.If they are equal, it performs the next comparison.

  • Jeśli wykonuje porównanie bajtów po bajcie dla następnych ośmiu Byte wartości.If performs a byte-by-byte comparison of the next eight Byte values. W przypadku napotkania pierwszej pary nierównej zwraca wynik.When it encounters the first unequal pair, it returns the result. W przeciwnym razie zwraca wartość 0, aby wskazać, że dwie Guid wartości są równe.Otherwise, it returns 0 to indicate that the two Guid values are equal.

Jeśli dwa identyfikatory GUID mają równe wartości dla składnika, Metoda porównuje Następny składnik.If two GUIDs have equal values for a component, the method compares the next component. Po znalezieniu składnika, którego wartości są różne, zwraca wynik.When it finds a component whose values are unequal, it returns the result.

Należy zauważyć, że Final osiem bajtów pojawia się w ciągu reprezentującym Guid w kolejności odwrotnej, od małego bajtu do dużego bajtu.Note that the final eight bytes appear in the string representation of a Guid in reverse order, from low byte to high byte. Na przykład w reprezentacji ciągu Guid wartości "01e75c83-c6f5-4192-b57e-7427cec5560d" Final osiem bajtów to "b57e-7427cec5560d".For example, in the string representation of the Guid value "01e75c83-c6f5-4192-b57e-7427cec5560d", the final eight bytes are "b57e-7427cec5560d."

Dotyczy