Guid.CompareTo Méthode

Définition

Compare cette instance à un objet spécifié ou Guid et retourne une indication de leurs valeurs relatives.

Surcharges

CompareTo(Guid)

Compare cette instance à un objet Guid spécifié et retourne une indication de leurs valeurs relatives.

CompareTo(Object)

Compare cette instance à un objet spécifié et retourne une indication de leurs valeurs relatives.

CompareTo(Guid)

Compare cette instance à un objet Guid spécifié et retourne une indication de leurs valeurs relatives.

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

Paramètres

value
Guid

Objet à comparer à cette instance.

Retours

Int32

Nombre signé indiquant les valeurs relatives de cette instance et value.

Valeur retournée Description
Entier négatif Cette instance est inférieure à value.
Zéro Cette instance est égale à value.
Entier positif Cette instance est supérieure à value.

Implémente

Exemples

L’exemple suivant appelle la CompareTo(Guid) méthode pour comparer une valeur GUID à deux valeurs GUID similaires.

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

Remarques

La CompareTo méthode compare les GUID comme s’ils étaient des valeurs fournies au Guid(Int32, Int16, Int16, Byte[]) constructeur, comme suit :

  • Il compare les UInt32 valeurs et retourne un résultat s’ils sont inégaux. S’ils sont égaux, il effectue la comparaison suivante.

  • Il compare les premières UInt16 valeurs et retourne un résultat s’ils sont inégaux. S’ils sont égaux, il effectue la comparaison suivante.

  • Il compare les deuxièmes UInt16 valeurs et retourne un résultat s’ils sont inégaux. S’ils sont égaux, il effectue la comparaison suivante.

  • Si elle effectue une comparaison d’octets par octets des huit Byte valeurs suivantes. Lorsqu’elle rencontre la première paire inégale, elle retourne le résultat. Sinon, elle retourne 0 pour indiquer que les deux Guid valeurs sont égales.

Notez que les huit derniers octets apparaissent dans la représentation sous forme de chaîne d’un Guid ordre inverse, de bas octets à octets élevés. Par exemple, dans la représentation sous forme de chaîne de la Guid valeur « 01e75c83-c6f5-4192-b57e-7427cec5560d », les huit derniers octets sont « b57e-7427cec5560d ». En d’autres termes, les huit derniers octets sont comparés sur une base d’octets de gauche à droite à partir de 0xb5.

Si deux GUID ont des valeurs égales pour un composant, la méthode compare le composant suivant. Lorsqu’il trouve un composant dont les valeurs sont inégales, il retourne le résultat.

Cette méthode implémente l’interface System.IComparable<T> et effectue légèrement mieux que la Guid.CompareTo méthode, car elle n’a pas besoin de convertir le value paramètre en valeur Guid .

S’applique à

CompareTo(Object)

Compare cette instance à un objet spécifié et retourne une indication de leurs valeurs relatives.

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

Paramètres

value
Object

Objet à comparer ou null.

Retours

Int32

Nombre signé indiquant les valeurs relatives de cette instance et value.

Valeur retournée Description
Entier négatif Cette instance est inférieure à value.
Zéro Cette instance est égale à value.
Entier positif Cette instance est supérieure à value, ou value est null.

Implémente

Exceptions

value n’est pas un Guid.

Exemples

L’exemple suivant utilise l’attribut GuidAttribute pour affecter un GUID à une classe. Il récupère la valeur de ce GUID en appelant la Attribute.GetCustomAttribute méthode et en transmettant la Value propriété de l’objet retourné GuidAttribute à la Parse méthode. Il compare ensuite ce GUID à un tableau de valeurs.

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

Remarques

Le value paramètre doit être null ou une instance de Guid; sinon, une exception est levée. Toute instance de Guid, quelle que soit sa valeur, est considérée comme supérieure nullà .

La CompareTo méthode compare les GUID comme s’ils étaient des valeurs fournies au Guid constructeur, comme suit :

  • Il compare les Int32 valeurs et retourne un résultat s’ils sont inégaux. S’ils sont égaux, il effectue la comparaison suivante.

  • Il compare les premières Int16 valeurs et retourne un résultat s’ils sont inégaux. S’ils sont égaux, il effectue la comparaison suivante.

  • Il compare les deuxièmes Int16 valeurs et retourne un résultat s’ils sont inégaux. S’ils sont égaux, il effectue la comparaison suivante.

  • Si elle effectue une comparaison d’octets par octets des huit Byte valeurs suivantes. Lorsqu’elle rencontre la première paire inégale, elle retourne le résultat. Sinon, elle retourne 0 pour indiquer que les deux Guid valeurs sont égales.

Si deux GUID ont des valeurs égales pour un composant, la méthode compare le composant suivant. Lorsqu’il trouve un composant dont les valeurs sont inégales, il retourne le résultat.

Notez que les huit derniers octets apparaissent dans la représentation sous forme de chaîne d’un Guid ordre inverse, de bas octets à octets élevés. Par exemple, dans la représentation sous forme de chaîne de la Guid valeur « 01e75c83-c6f5-4192-b57e-7427cec5560d », les huit derniers octets sont « b57e-7427cec5560d ».

S’applique à