Guid.CompareTo Metodo

Definizione

Confronta l'istanza con un oggetto specificato o un oggetto Guid e restituisce un'indicazione dei relativi valori.Compares this instance to a specified object or Guid and returns an indication of their relative values.

Overload

CompareTo(Guid)

Confronta questa istanza con un oggetto Guid specificato e restituisce un'indicazione dei valori relativi.Compares this instance to a specified Guid object and returns an indication of their relative values.

CompareTo(Object)

Confronta questa istanza con un oggetto specificato e restituisce un'indicazione dei valori relativi.Compares this instance to a specified object and returns an indication of their relative values.

CompareTo(Guid)

Confronta questa istanza con un oggetto Guid specificato e restituisce un'indicazione dei valori relativi.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

Parametri

value
Guid

Oggetto da confrontare con questa istanza.An object to compare to this instance.

Restituisce

Numero con segno che indica i valori relativi di questa istanza e di value.A signed number indicating the relative values of this instance and value.

Valore restituitoReturn value DescriptionDescription
Intero negativoA negative integer L'istanza è minore di value.This instance is less than value.
ZeroZero L'istanza è uguale a value.This instance is equal to value.
Intero positivoA positive integer L'istanza è maggiore di value.This instance is greater than value.

Implementazioni

Esempi

Nell'esempio seguente viene chiamato il metodo CompareTo(Guid) per confrontare un valore GUID con due valori GUID simili.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

Commenti

Il metodo CompareTo Confronta i GUID come se fossero valori forniti al costruttore Guid(Int32, Int16, Int16, Byte[]), come indicato di seguito:The CompareTo method compares the GUIDs as if they were values provided to the Guid(Int32, Int16, Int16, Byte[]) constructor, as follows:

  • Confronta i valori UInt32 e restituisce un risultato se sono diversi.It compares the UInt32 values, and returns a result if they are unequal. Se sono uguali, viene eseguito il confronto successivo.If they are equal, it performs the next comparison.

  • Confronta i primi valori UInt16 e restituisce un risultato se sono diversi.It compares the first UInt16 values, and returns a result if they are unequal. Se sono uguali, viene eseguito il confronto successivo.If they are equal, it performs the next comparison.

  • Confronta il secondo valore UInt16 e restituisce un risultato se sono diversi.It compares the second UInt16 values, and returns a result if they are unequal. Se sono uguali, viene eseguito il confronto successivo.If they are equal, it performs the next comparison.

  • Se esegue un confronto byte per byte dei seguenti otto valori Byte.If performs a byte-by-byte comparison of the next eight Byte values. Quando rileva la prima coppia diversa, restituisce il risultato.When it encounters the first unequal pair, it returns the result. In caso contrario, restituisce 0 per indicare che i due valori @no__t 0 sono uguali.Otherwise, it returns 0 to indicate that the two Guid values are equal.

Si noti che gli otto byte finali vengono visualizzati nella rappresentazione di stringa di un Guid in ordine inverso, da un byte basso a un byte elevato.Note that the final eight bytes appear in the string representation of a Guid in reverse order, from low byte to high byte. Nella rappresentazione di stringa del valore Guid "01e75c83-C6F5-4192-b57e-7427cec5560d", ad esempio, gli otto byte finali sono "b57e-7427cec5560d".For example, in the string representation of the Guid value "01e75c83-c6f5-4192-b57e-7427cec5560d", the final eight bytes are "b57e-7427cec5560d." In altre parole, gli otto byte finali vengono confrontati byte per byte da sinistra verso destra a partire da 0xB5.In other words, the final eight bytes are compared on a byte-by-byte basis from left to right starting with 0xb5.

Se due GUID hanno valori uguali per un componente, il metodo confronta il componente successivo.If two GUIDs have equal values for a component, the method compares the next component. Quando viene trovato un componente i cui valori sono diversi, viene restituito il risultato.When it finds a component whose values are unequal, it returns the result.

Questo metodo implementa l'interfaccia System.IComparable<T> e offre prestazioni leggermente migliori rispetto al metodo Guid.CompareTo, in quanto non è necessario convertire il parametro value in un valore Guid.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.

CompareTo(Object)

Confronta questa istanza con un oggetto specificato e restituisce un'indicazione dei valori relativi.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);
abstract member CompareTo : obj -> int
override this.CompareTo : obj -> int
Public Function CompareTo (value As Object) As Integer

Parametri

value
Object

Oggetto da confrontare o null.An object to compare, or null.

Restituisce

Numero con segno che indica i valori relativi di questa istanza e di value.A signed number indicating the relative values of this instance and value.

Valore restituitoReturn value DescriptionDescription
Intero negativoA negative integer L'istanza è minore di value.This instance is less than value.
ZeroZero L'istanza è uguale a value.This instance is equal to value.
Intero positivoA positive integer L'istanza è maggiore di value oppure value è null.This instance is greater than value, or value is null.

Implementazioni

Eccezioni

value non è un oggetto Guid.value is not a Guid.

Esempi

Nell'esempio seguente viene usato l'attributo GuidAttribute per assegnare un GUID a una classe.The following example uses the GuidAttribute attribute to assign a GUID to a class. Recupera il valore di questo GUID chiamando il metodo Attribute.GetCustomAttribute e passando la proprietà Value dell'oggetto GuidAttribute restituito al metodo Parse.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. Quindi confronta il GUID con una matrice di valori.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

Commenti

Il parametro value deve essere null o un'istanza di Guid; in caso contrario, viene generata un'eccezione.The value parameter must be null or an instance of Guid; otherwise, an exception is thrown. Qualsiasi istanza di Guid, indipendentemente dal valore, viene considerata maggiore di null.Any instance of Guid, regardless of its value, is considered greater than null.

Il metodo CompareTo Confronta i GUID come se fossero valori forniti al costruttore Guid, come indicato di seguito:The CompareTo method compares the GUIDs as if they were values provided to the Guid constructor, as follows:

  • Confronta i valori Int32 e restituisce un risultato se sono diversi.It compares the Int32 values, and returns a result if they are unequal. Se sono uguali, viene eseguito il confronto successivo.If they are equal, it performs the next comparison.

  • Confronta i primi valori Int16 e restituisce un risultato se sono diversi.It compares the first Int16 values, and returns a result if they are unequal. Se sono uguali, viene eseguito il confronto successivo.If they are equal, it performs the next comparison.

  • Confronta il secondo valore Int16 e restituisce un risultato se sono diversi.It compares the second Int16 values, and returns a result if they are unequal. Se sono uguali, viene eseguito il confronto successivo.If they are equal, it performs the next comparison.

  • Se esegue un confronto byte per byte dei seguenti otto valori Byte.If performs a byte-by-byte comparison of the next eight Byte values. Quando rileva la prima coppia diversa, restituisce il risultato.When it encounters the first unequal pair, it returns the result. In caso contrario, restituisce 0 per indicare che i due valori @no__t 0 sono uguali.Otherwise, it returns 0 to indicate that the two Guid values are equal.

Se due GUID hanno valori uguali per un componente, il metodo confronta il componente successivo.If two GUIDs have equal values for a component, the method compares the next component. Quando viene trovato un componente i cui valori sono diversi, viene restituito il risultato.When it finds a component whose values are unequal, it returns the result.

Si noti che gli otto byte finali vengono visualizzati nella rappresentazione di stringa di un Guid in ordine inverso, da un byte basso a un byte elevato.Note that the final eight bytes appear in the string representation of a Guid in reverse order, from low byte to high byte. Nella rappresentazione di stringa del valore Guid "01e75c83-C6F5-4192-b57e-7427cec5560d", ad esempio, gli otto byte finali sono "b57e-7427cec5560d".For example, in the string representation of the Guid value "01e75c83-c6f5-4192-b57e-7427cec5560d", the final eight bytes are "b57e-7427cec5560d."

Si applica a