Guid.CompareTo Método

Definición

Compara esta instancia con un objeto especificado o con un objeto Guid, y devuelve una indicación de sus valores relativos.Compares this instance to a specified object or Guid and returns an indication of their relative values.

Sobrecargas

CompareTo(Guid)

Compara esta instancia con un objeto Guid especificado y devuelve una indicación de los valores relativos.Compares this instance to a specified Guid object and returns an indication of their relative values.

CompareTo(Object)

Compara esta instancia con un objeto especificado y devuelve una indicación de los valores relativos.Compares this instance to a specified object and returns an indication of their relative values.

CompareTo(Guid)

Compara esta instancia con un objeto Guid especificado y devuelve una indicación de los valores relativos.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

Parámetros

value
Guid

Un objeto que se va a comparar con esta instancia.An object to compare to this instance.

Devoluciones

Int32

Número con signo que indica los valores relativos de esta instancia y value.A signed number indicating the relative values of this instance and value.

Valor devueltoReturn value DescripciónDescription
Un entero negativoA negative integer Esta instancia es menor que value.This instance is less than value.
CeroZero Esta instancia es igual a value.This instance is equal to value.
Un entero positivo.A positive integer Esta instancia es mayor que value.This instance is greater than value.

Implementaciones

Ejemplos

En el ejemplo siguiente se llama al CompareTo(Guid) método para comparar un valor GUID con dos valores GUID similares.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

Comentarios

El CompareTo método compara los GUID como si fueran valores proporcionados al Guid(Int32, Int16, Int16, Byte[]) constructor, como se indica a continuación:The CompareTo method compares the GUIDs as if they were values provided to the Guid(Int32, Int16, Int16, Byte[]) constructor, as follows:

  • Compara los UInt32 valores y devuelve un resultado si no son iguales.It compares the UInt32 values, and returns a result if they are unequal. Si son iguales, realiza la siguiente comparación.If they are equal, it performs the next comparison.

  • Compara los primeros UInt16 valores y devuelve un resultado si no son iguales.It compares the first UInt16 values, and returns a result if they are unequal. Si son iguales, realiza la siguiente comparación.If they are equal, it performs the next comparison.

  • Compara los dos UInt16 valores y devuelve un resultado si no son iguales.It compares the second UInt16 values, and returns a result if they are unequal. Si son iguales, realiza la siguiente comparación.If they are equal, it performs the next comparison.

  • Si realiza una comparación byte a byte de los ocho Byte valores siguientes.If performs a byte-by-byte comparison of the next eight Byte values. Cuando encuentra el primer par distinto de Equal, devuelve el resultado.When it encounters the first unequal pair, it returns the result. De lo contrario, devuelve 0 para indicar que los dos Guid valores son iguales.Otherwise, it returns 0 to indicate that the two Guid values are equal.

Tenga en cuenta que los ocho bytes finales aparecen en la representación de cadena de un Guid en orden inverso, de bytes de menor a mayor byte.Note that the final eight bytes appear in the string representation of a Guid in reverse order, from low byte to high byte. Por ejemplo, en la representación de cadena del Guid valor "01e75c83-C6F5-4192-b57e-7427cec5560d", los ocho últimos bytes son "b57e-7427cec5560d".For example, in the string representation of the Guid value "01e75c83-c6f5-4192-b57e-7427cec5560d", the final eight bytes are "b57e-7427cec5560d." En otras palabras, los últimos ocho bytes se comparan de izquierda a derecha a partir de 0xb5.In other words, the final eight bytes are compared on a byte-by-byte basis from left to right starting with 0xb5.

Si dos GUID tienen los mismos valores para un componente, el método compara el componente siguiente.If two GUIDs have equal values for a component, the method compares the next component. Cuando encuentra un componente cuyos valores no son iguales, devuelve el resultado.When it finds a component whose values are unequal, it returns the result.

Este método implementa la System.IComparable<T> interfaz y se ejecuta ligeramente mejor que el Guid.CompareTo método, ya que no tiene que convertir el value parámetro en un Guid valor.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.

Se aplica a

CompareTo(Object)

Compara esta instancia con un objeto especificado y devuelve una indicación de los valores relativos.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);
public int CompareTo (object value);
abstract member CompareTo : obj -> int
override this.CompareTo : obj -> int
Public Function CompareTo (value As Object) As Integer

Parámetros

value
Object

Objeto que se va a comparar o null.An object to compare, or null.

Devoluciones

Int32

Número con signo que indica los valores relativos de esta instancia y value.A signed number indicating the relative values of this instance and value.

Valor devueltoReturn value DescripciónDescription
Un entero negativoA negative integer Esta instancia es menor que value.This instance is less than value.
CeroZero Esta instancia es igual a value.This instance is equal to value.
Un entero positivo.A positive integer Esta instancia es mayor que value o bien value es null.This instance is greater than value, or value is null.

Implementaciones

Excepciones

value no es un Guid.value is not a Guid.

Ejemplos

En el ejemplo siguiente se usa el GuidAttribute atributo para asignar un GUID a una clase.The following example uses the GuidAttribute attribute to assign a GUID to a class. Recupera el valor de este GUID llamando al Attribute.GetCustomAttribute método y pasando la Value propiedad del objeto devuelto GuidAttribute al Parse método.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. A continuación, compara el GUID con una matriz de valores.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

Comentarios

El value parámetro debe ser null o una instancia de Guid ; en caso contrario, se produce una excepción.The value parameter must be null or an instance of Guid; otherwise, an exception is thrown. Cualquier instancia de Guid , independientemente de su valor, se considera mayor que null .Any instance of Guid, regardless of its value, is considered greater than null.

El CompareTo método compara los GUID como si fueran valores proporcionados al Guid constructor, como se indica a continuación:The CompareTo method compares the GUIDs as if they were values provided to the Guid constructor, as follows:

  • Compara los Int32 valores y devuelve un resultado si no son iguales.It compares the Int32 values, and returns a result if they are unequal. Si son iguales, realiza la siguiente comparación.If they are equal, it performs the next comparison.

  • Compara los primeros Int16 valores y devuelve un resultado si no son iguales.It compares the first Int16 values, and returns a result if they are unequal. Si son iguales, realiza la siguiente comparación.If they are equal, it performs the next comparison.

  • Compara los dos Int16 valores y devuelve un resultado si no son iguales.It compares the second Int16 values, and returns a result if they are unequal. Si son iguales, realiza la siguiente comparación.If they are equal, it performs the next comparison.

  • Si realiza una comparación byte a byte de los ocho Byte valores siguientes.If performs a byte-by-byte comparison of the next eight Byte values. Cuando encuentra el primer par distinto de Equal, devuelve el resultado.When it encounters the first unequal pair, it returns the result. De lo contrario, devuelve 0 para indicar que los dos Guid valores son iguales.Otherwise, it returns 0 to indicate that the two Guid values are equal.

Si dos GUID tienen los mismos valores para un componente, el método compara el componente siguiente.If two GUIDs have equal values for a component, the method compares the next component. Cuando encuentra un componente cuyos valores no son iguales, devuelve el resultado.When it finds a component whose values are unequal, it returns the result.

Tenga en cuenta que los ocho bytes finales aparecen en la representación de cadena de un Guid en orden inverso, de bytes de menor a mayor byte.Note that the final eight bytes appear in the string representation of a Guid in reverse order, from low byte to high byte. Por ejemplo, en la representación de cadena del Guid valor "01e75c83-C6F5-4192-b57e-7427cec5560d", los ocho últimos bytes son "b57e-7427cec5560d".For example, in the string representation of the Guid value "01e75c83-c6f5-4192-b57e-7427cec5560d", the final eight bytes are "b57e-7427cec5560d."

Se aplica a