Guid.CompareTo Methode

Definition

Vergleicht diese Instanz mit einem angegebenen Objekt oder Guid und gibt eine Angabe über das Verhältnis der entsprechenden Werte zurück.

Überlädt

CompareTo(Guid)

Vergleicht diese Instanz mit einem angegebenen Guid-Objekt und gibt eine Angabe über das Verhältnis der entsprechenden Werte zurück.

CompareTo(Object)

Vergleicht diese Instanz mit einem angegebenen Objekt und gibt eine Angabe über das Verhältnis der entsprechenden Werte zurück.

CompareTo(Guid)

Vergleicht diese Instanz mit einem angegebenen Guid-Objekt und gibt eine Angabe über das Verhältnis der entsprechenden Werte zurück.

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

Parameter

value
Guid

Ein mit dieser Instanz zu vergleichendes Objekt.

Gibt zurück

Int32

Eine Zahl mit Vorzeichen, die das Verhältnis zwischen dem Wert dieser Instanz und value angibt.

Rückgabewert BESCHREIBUNG
Eine negative ganze Zahl Diese Instanz ist kleiner als value.
Zero Diese Instanz ist gleich value.
Eine positive ganze Zahl Diese Instanz ist größer als value.

Implementiert

Beispiele

Im folgenden Beispiel wird die CompareTo(Guid) Methode aufgerufen, um einen GUID-Wert mit zwei ähnlichen GUID-Werten zu vergleichen.

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

Hinweise

Die CompareTo Methode vergleicht die GUIDs wie folgt, als ob sie Werte für den Guid(Int32, Int16, Int16, Byte[]) Konstruktor bereitgestellt wurden:

  • Es vergleicht die UInt32 Werte und gibt ein Ergebnis zurück, wenn sie ungleich sind. Wenn sie gleich sind, führt sie den nächsten Vergleich aus.

  • Es vergleicht die ersten UInt16 Werte und gibt ein Ergebnis zurück, wenn sie ungleich sind. Wenn sie gleich sind, führt sie den nächsten Vergleich aus.

  • Es vergleicht die zweiten UInt16 Werte und gibt ein Ergebnis zurück, wenn sie ungleich sind. Wenn sie gleich sind, führt sie den nächsten Vergleich aus.

  • Wenn ein Byte-by-Byte-Vergleich der nächsten acht Byte Werte ausgeführt wird. Wenn es auf das erste ungleiche Paar trifft, gibt es das Ergebnis zurück. Andernfalls wird 0 zurückgegeben, um anzugeben, dass die beiden Guid Werte gleich sind.

Beachten Sie, dass die letzten acht Bytes in der Zeichenfolgendarstellung einer Guid umgekehrten Reihenfolge angezeigt werden, von einem niedrigen Byte bis hin zu hohem Byte. Beispielsweise sind in der Zeichenfolgendarstellung des Guid Werts "01e75c83-c6f5-4192-b57e-7427cec5560d" die letzten acht Bytes "b57e-7427cec560d". Mit anderen Worten, die letzten acht Bytes werden auf einer Byte-by-Byte-Basis von links nach rechts verglichen, beginnend mit 0xb5.

Wenn zwei GUIDs gleich Werte für eine Komponente haben, vergleicht die Methode die nächste Komponente. Wenn eine Komponente gefunden wird, deren Werte ungleich sind, wird das Ergebnis zurückgegeben.

Diese Methode implementiert die Schnittstelle und führt etwas besser als die System.IComparable<T> Guid.CompareTo Methode aus, da der value Parameter nicht in einen Guid Wert konvertiert werden muss.

Gilt für:

CompareTo(Object)

Vergleicht diese Instanz mit einem angegebenen Objekt und gibt eine Angabe über das Verhältnis der entsprechenden Werte zurück.

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

Parameter

value
Object

Ein Vergleichsobjekt oder null.

Gibt zurück

Int32

Eine Zahl mit Vorzeichen, die das Verhältnis zwischen dem Wert dieser Instanz und value angibt.

Rückgabewert BESCHREIBUNG
Eine negative ganze Zahl Diese Instanz ist kleiner als value.
Zero Diese Instanz ist gleich value.
Eine positive ganze Zahl Diese Instanz ist größer als value, oder value ist null.

Implementiert

Ausnahmen

value ist keine Guid.

Beispiele

Im folgenden Beispiel wird das GuidAttribute Attribut verwendet, um einer Klasse eine GUID zuzuweisen. Sie ruft den Wert dieser GUID ab, indem Sie die Attribute.GetCustomAttribute Methode aufrufen und die Value Eigenschaft des zurückgegebenen GuidAttribute Objekts an die Parse Methode übergeben. Anschließend wird diese GUID mit einem Array von Werten verglichen.

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

Hinweise

Der value Parameter muss null eine Instanz von Guid; andernfalls wird eine Ausnahme ausgelöst. Jede Instanz von Guid, unabhängig vom Wert, gilt als größer als null.

Die CompareTo Methode vergleicht die GUIDs wie folgt, als ob sie Werte für den Guid Konstruktor bereitgestellt wurden:

  • Es vergleicht die Int32 Werte und gibt ein Ergebnis zurück, wenn sie ungleich sind. Wenn sie gleich sind, führt sie den nächsten Vergleich aus.

  • Es vergleicht die ersten Int16 Werte und gibt ein Ergebnis zurück, wenn sie ungleich sind. Wenn sie gleich sind, führt sie den nächsten Vergleich aus.

  • Es vergleicht die zweiten Int16 Werte und gibt ein Ergebnis zurück, wenn sie ungleich sind. Wenn sie gleich sind, führt sie den nächsten Vergleich aus.

  • Wenn ein Byte-by-Byte-Vergleich der nächsten acht Byte Werte ausgeführt wird. Wenn es auf das erste ungleiche Paar trifft, gibt es das Ergebnis zurück. Andernfalls wird 0 zurückgegeben, um anzugeben, dass die beiden Guid Werte gleich sind.

Wenn zwei GUIDs gleich Werte für eine Komponente haben, vergleicht die Methode die nächste Komponente. Wenn eine Komponente gefunden wird, deren Werte ungleich sind, wird das Ergebnis zurückgegeben.

Beachten Sie, dass die letzten acht Bytes in der Zeichenfolgendarstellung einer Guid umgekehrten Reihenfolge angezeigt werden, von einem niedrigen Byte bis hin zu hohem Byte. Beispielsweise sind in der Zeichenfolgendarstellung des Guid Werts "01e75c83-c6f5-4192-b57e-7427cec5560d" die letzten acht Bytes "b57e-7427cec560d".

Gilt für: