Guid.CompareTo Metoda

Definicja

Porównuje to wystąpienie z określonym obiektem lub Guid zwraca wskazanie ich wartości względnych.

Przeciążenia

CompareTo(Guid)

Porównuje to wystąpienie z określonym Guid obiektem i zwraca wskazanie ich wartości względnych.

CompareTo(Object)

Porównuje to wystąpienie z określonym obiektem i zwraca wskazanie ich względnych wartości.

CompareTo(Guid)

Źródło:
Guid.cs
Źródło:
Guid.cs
Źródło:
Guid.cs

Porównuje to wystąpienie z określonym Guid obiektem i zwraca wskazanie ich wartości względnych.

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.

Zwraca

Liczba ze znakiem wskazująca względne wartości tego wystąpienia i value.

Wartość zwracana Opis
Ujemna liczba całkowita To wystąpienie jest mniejsze niż value.
Zero To wystąpienie jest równe value.
Dodatnia liczba całkowita To wystąpienie jest większe niż 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.

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

Uwagi

Metoda CompareTo porównuje identyfikatory GUID tak, jakby zostały podane do konstruktora Guid(Int32, Int16, Int16, Byte[]) w następujący sposób:

  • Porównuje UInt32 wartości i zwraca wynik, jeśli są one nierówne. Jeśli są równe, wykonuje następne porównanie.

  • Porównuje pierwsze UInt16 wartości i zwraca wynik, jeśli są one nierówne. Jeśli są równe, wykonuje następne porównanie.

  • Porównuje drugie UInt16 wartości i zwraca wynik, jeśli są one nierówne. Jeśli są równe, wykonuje następne porównanie.

  • Jeśli wykonuje porównanie bajtów po bajtach z następnych ośmiu Byte wartości. Gdy napotka pierwszą nierówną parę, zwraca wynik. W przeciwnym razie zwraca wartość 0, aby wskazać, że dwie Guid wartości są równe.

Należy pamiętać, że ostatnie osiem bajtów jest wyświetlane w ciągu reprezentującym odwrotną Guid kolejność od małej bajtu do wysokiej bajtu. Na przykład w ciągu reprezentacji Guid wartości "01e75c83-c6f5-4192-b57e-7427cec560d", ostatnie osiem bajtów to "b57e-7427cec5560d". Innymi słowy, ostatnie osiem bajtów jest porównywane na podstawie bajtów bajtów od lewej do prawej, począwszy od 0xb5.

Jeśli dwa identyfikatory GUID mają równe wartości dla składnika, metoda porównuje następny składnik. Po znalezieniu składnika, którego wartości są nierówne, zwraca wynik.

Ta metoda implementuje System.IComparable<T> interfejs i działa nieco lepiej niż Guid.CompareTo metoda, ponieważ nie musi konwertować parametru value na Guid wartość.

Dotyczy

CompareTo(Object)

Źródło:
Guid.cs
Źródło:
Guid.cs
Źródło:
Guid.cs

Porównuje to wystąpienie z określonym obiektem i zwraca wskazanie ich względnych wartości.

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.

Zwraca

Liczba ze znakiem wskazująca względne wartości tego wystąpienia i value.

Wartość zwracana Opis
Ujemna liczba całkowita To wystąpienie jest mniejsze niż value.
Zero To wystąpienie jest równe value.
Dodatnia liczba całkowita To wystąpienie jest większe niż value, lub value ma nullwartość .

Implementuje

Wyjątki

valuenie jest .Guid

Przykłady

W poniższym przykładzie użyto atrybutu GuidAttribute do przypisania identyfikatora GUID do klasy. 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 . Następnie porównuje ten identyfikator GUID z tablicą wartości.

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

Uwagi

Parametr value musi mieć null wartość lub wystąpienie Guidklasy ; w przeciwnym razie zgłaszany jest wyjątek. Każde wystąpienie klasy Guid, niezależnie od jego wartości, jest uznawane za większe niż null.

Metoda CompareTo porównuje identyfikatory GUID tak, jakby zostały podane do konstruktora Guid w następujący sposób:

  • Porównuje Int32 wartości i zwraca wynik, jeśli są one nierówne. Jeśli są równe, wykonuje następne porównanie.

  • Porównuje pierwsze Int16 wartości i zwraca wynik, jeśli są one nierówne. Jeśli są równe, wykonuje następne porównanie.

  • Porównuje drugie Int16 wartości i zwraca wynik, jeśli są one nierówne. Jeśli są równe, wykonuje następne porównanie.

  • Jeśli wykonuje porównanie bajtów po bajtach z następnych ośmiu Byte wartości. Gdy napotka pierwszą nierówną parę, zwraca wynik. W przeciwnym razie zwraca wartość 0, aby wskazać, że dwie Guid wartości są równe.

Jeśli dwa identyfikatory GUID mają równe wartości dla składnika, metoda porównuje następny składnik. Po znalezieniu składnika, którego wartości są nierówne, zwraca wynik.

Należy pamiętać, że ostatnie osiem bajtów jest wyświetlane w ciągu reprezentującym odwrotną Guid kolejność od małej bajtu do wysokiej bajtu. Na przykład w ciągu reprezentacji Guid wartości "01e75c83-c6f5-4192-b57e-7427cec560d", ostatnie osiem bajtów to "b57e-7427cec5560d".

Dotyczy