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.

Sobrecargas

CompareTo(Guid)

Compara esta instancia con un objeto Guid especificado y devuelve una indicación de los valores relativos.

CompareTo(Object)

Compara esta instancia con un objeto especificado y devuelve una indicación de los valores relativos.

CompareTo(Guid)

Source:
Guid.cs
Source:
Guid.cs
Source:
Guid.cs

Compara esta instancia con un objeto Guid especificado y devuelve una indicación de los valores relativos.

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.

Devoluciones

Número con signo que indica los valores relativos de esta instancia y value.

Valor devuelto Descripción
Un entero negativo Esta instancia es menor que value.
Cero Esta instancia es igual a value.
Un entero positivo. Esta instancia es mayor que value.

Implementaciones

Ejemplos

En el ejemplo siguiente se llama al CompareTo(Guid) método para comparar un valor GUID con dos valores GUID similares.

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

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:

  • Compara los UInt32 valores y devuelve un resultado si son diferentes. Si son iguales, realiza la siguiente comparación.

  • Compara los primeros UInt16 valores y devuelve un resultado si son diferentes. Si son iguales, realiza la siguiente comparación.

  • Compara los segundos UInt16 valores y devuelve un resultado si son diferentes. Si son iguales, realiza la siguiente comparación.

  • Si realiza una comparación de bytes de bytes de los ocho Byte valores siguientes. Cuando encuentra el primer par desigual, devuelve el resultado. De lo contrario, devuelve 0 para indicar que los dos Guid valores son iguales.

Tenga en cuenta que los ocho bytes finales aparecen en la representación de cadena de un Guid en orden inverso, de un byte bajo a un byte alto. Por ejemplo, en la representación de cadena del Guid valor "01e75c83-c6f5-4192-b57e-7427cec5560d", los ocho bytes finales son "b57e-7427cec5560d". En otras palabras, los ocho bytes finales se comparan con un byte de izquierda a derecha empezando por 0xb5.

Si dos GUID tienen valores iguales para un componente, el método compara el siguiente componente. Cuando encuentra un componente cuyos valores son distintos, devuelve el resultado.

Este método implementa la System.IComparable<T> interfaz y funciona ligeramente mejor que el Guid.CompareTo método porque no tiene que convertir el value parámetro en un Guid valor.

Se aplica a

CompareTo(Object)

Source:
Guid.cs
Source:
Guid.cs
Source:
Guid.cs

Compara esta instancia con un objeto especificado y devuelve una indicación de los valores relativos.

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.

Devoluciones

Número con signo que indica los valores relativos de esta instancia y value.

Valor devuelto Descripción
Un entero negativo Esta instancia es menor que value.
Cero Esta instancia es igual a value.
Un entero positivo. Esta instancia es mayor que value o bien value es null.

Implementaciones

Excepciones

value no es un Guid.

Ejemplos

En el ejemplo siguiente se usa el GuidAttribute atributo para asignar un GUID a una clase . 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 . A continuación, compara ese GUID con una matriz de valores.

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

Comentarios

El value parámetro debe ser null o una instancia de Guid; de lo contrario, se produce una excepción. Cualquier instancia de Guid, independientemente de su valor, se considera mayor que null.

El CompareTo método compara los GUID como si fueran valores proporcionados al Guid constructor, como se indica a continuación:

  • Compara los Int32 valores y devuelve un resultado si son diferentes. Si son iguales, realiza la siguiente comparación.

  • Compara los primeros Int16 valores y devuelve un resultado si son diferentes. Si son iguales, realiza la siguiente comparación.

  • Compara los segundos Int16 valores y devuelve un resultado si son diferentes. Si son iguales, realiza la siguiente comparación.

  • Si realiza una comparación de bytes de bytes de los ocho Byte valores siguientes. Cuando encuentra el primer par desigual, devuelve el resultado. De lo contrario, devuelve 0 para indicar que los dos Guid valores son iguales.

Si dos GUID tienen valores iguales para un componente, el método compara el siguiente componente. Cuando encuentra un componente cuyos valores son distintos, devuelve el resultado.

Tenga en cuenta que los ocho bytes finales aparecen en la representación de cadena de un Guid en orden inverso, de un byte bajo a un byte alto. Por ejemplo, en la representación de cadena del Guid valor "01e75c83-c6f5-4192-b57e-7427cec5560d", los ocho bytes finales son "b57e-7427cec5560d".

Se aplica a