Guid.CompareTo Methode

Definitie

Vergelijkt dit exemplaar met een opgegeven object of Guid retourneert een indicatie van de relatieve waarden.

Overloads

Name Description
CompareTo(Guid)

Vergelijkt dit exemplaar met een opgegeven Guid object en retourneert een indicatie van de relatieve waarden.

CompareTo(Object)

Vergelijkt dit exemplaar met een opgegeven object en retourneert een indicatie van de relatieve waarden.

CompareTo(Guid)

Bron:
Guid.cs
Bron:
Guid.cs
Bron:
Guid.cs
Bron:
Guid.cs
Bron:
Guid.cs

Vergelijkt dit exemplaar met een opgegeven Guid object en retourneert een indicatie van de relatieve waarden.

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

Parameters

value
Guid

Een object dat moet worden vergeleken met dit exemplaar.

Retouren

Een ondertekend getal dat de relatieve waarden van dit exemplaar aangeeft en value.

Retourwaarde Beschrijving
Een negatief geheel getal Dit exemplaar is kleiner dan value.
Nul Dit exemplaar is gelijk aan value.
Een positief geheel getal Dit exemplaar is groter dan value.

Implementeringen

Voorbeelden

In het volgende voorbeeld wordt de CompareTo(Guid) methode aangeroepen om een GUID-waarde te vergelijken met twee vergelijkbare GUID-waarden.

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

Opmerkingen

De CompareTo methode vergelijkt de GUID's alsof ze waarden aan de Guid(Int32, Int16, Int16, Byte[]) constructor zijn opgegeven, als volgt:

  • Hiermee worden de UInt32 waarden vergeleken en wordt een resultaat geretourneerd als ze ongelijk zijn. Als ze gelijk zijn, wordt de volgende vergelijking uitgevoerd.

  • Hiermee worden de eerste UInt16 waarden vergeleken en wordt een resultaat geretourneerd als ze ongelijk zijn. Als ze gelijk zijn, wordt de volgende vergelijking uitgevoerd.

  • Hiermee worden de tweede UInt16 waarden vergeleken en wordt een resultaat geretourneerd als ze ongelijk zijn. Als ze gelijk zijn, wordt de volgende vergelijking uitgevoerd.

  • Als er een byte-bytevergelijking van de volgende acht Byte waarden wordt uitgevoerd. Wanneer het het eerste ongelijke paar tegenkomt, wordt het resultaat geretourneerd. Anders wordt 0 geretourneerd om aan te geven dat de twee Guid waarden gelijk zijn.

Houd er rekening mee dat de laatste acht bytes worden weergegeven in de tekenreeksweergave van een Guid in omgekeerde volgorde, van lage byte tot hoge byte. In de tekenreeksweergave van de Guid waarde '01e75c83-c6f5-4192-b57e-7427cec5560d', zijn de laatste acht bytes 'b57e-7427cec5560d'. Met andere woorden, de laatste acht bytes worden vergeleken op basis van byte-byte van links naar rechts vanaf 0xb5.

Als twee GUID's gelijke waarden hebben voor een onderdeel, vergelijkt de methode het volgende onderdeel. Wanneer een onderdeel wordt gevonden waarvan de waarden ongelijk zijn, wordt het resultaat geretourneerd.

Deze methode implementeert de System.IComparable<T> interface en presteert iets beter dan de Guid.CompareTo methode omdat deze de value parameter niet hoeft te converteren naar een Guid waarde.

Van toepassing op

CompareTo(Object)

Bron:
Guid.cs
Bron:
Guid.cs
Bron:
Guid.cs
Bron:
Guid.cs
Bron:
Guid.cs

Vergelijkt dit exemplaar met een opgegeven object en retourneert een indicatie van de relatieve waarden.

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

Parameters

value
Object

Een object dat moet worden vergeleken, of null.

Retouren

Een ondertekend getal dat de relatieve waarden van dit exemplaar aangeeft en value.

Retourwaarde Beschrijving
Een negatief geheel getal Dit exemplaar is kleiner dan value.
Nul Dit exemplaar is gelijk aan value.
Een positief geheel getal Dit exemplaar is groter dan value, of value is null.

Implementeringen

Uitzonderingen

value is geen Guid.

Voorbeelden

In het volgende voorbeeld wordt het GuidAttribute kenmerk gebruikt om een GUID toe te wijzen aan een klasse. Hiermee wordt de waarde van deze GUID opgehaald door de methode aan Attribute.GetCustomAttribute te roepen en de Value eigenschap van het geretourneerde GuidAttribute object door te geven aan de Parse methode. Vervolgens wordt die GUID vergeleken met een matrix met waarden.

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

Opmerkingen

De value-parameter moet null zijn of een instantie van Guid, anders wordt er een uitzondering opgeworpen. Elk exemplaar van Guid, ongeacht de waarde, wordt beschouwd als groter dan null.

De CompareTo methode vergelijkt de GUID's alsof ze waarden aan de Guid constructor zijn opgegeven, als volgt:

  • Hiermee worden de Int32 waarden vergeleken en wordt een resultaat geretourneerd als ze ongelijk zijn. Als ze gelijk zijn, wordt de volgende vergelijking uitgevoerd.

  • Hiermee worden de eerste Int16 waarden vergeleken en wordt een resultaat geretourneerd als ze ongelijk zijn. Als ze gelijk zijn, wordt de volgende vergelijking uitgevoerd.

  • Hiermee worden de tweede Int16 waarden vergeleken en wordt een resultaat geretourneerd als ze ongelijk zijn. Als ze gelijk zijn, wordt de volgende vergelijking uitgevoerd.

  • Als er een byte-bytevergelijking van de volgende acht Byte waarden wordt uitgevoerd. Wanneer het het eerste ongelijke paar tegenkomt, wordt het resultaat geretourneerd. Anders wordt 0 geretourneerd om aan te geven dat de twee Guid waarden gelijk zijn.

Als twee GUID's gelijke waarden hebben voor een onderdeel, vergelijkt de methode het volgende onderdeel. Wanneer een onderdeel wordt gevonden waarvan de waarden ongelijk zijn, wordt het resultaat geretourneerd.

Houd er rekening mee dat de laatste acht bytes worden weergegeven in de tekenreeksweergave van een Guid in omgekeerde volgorde, van lage byte tot hoge byte. In de tekenreeksweergave van de Guid waarde '01e75c83-c6f5-4192-b57e-7427cec5560d', zijn de laatste acht bytes 'b57e-7427cec5560d'.

Van toepassing op