Guid.CompareTo Método

Definição

Compara essa instância com um objeto especificado ou Guid e retorna uma indicação dos valores relativos.Compares this instance to a specified object or Guid and returns an indication of their relative values.

Sobrecargas

CompareTo(Guid)

Compara essa instância com um objeto Guid especificado e retorna uma indicação dos valores relativos.Compares this instance to a specified Guid object and returns an indication of their relative values.

CompareTo(Object)

Compara essa instância com um objeto especificado e retorna uma indicação dos valores relativos.Compares this instance to a specified object and returns an indication of their relative values.

CompareTo(Guid)

Compara essa instância com um objeto Guid especificado e retorna uma indicação dos 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

Um objeto a ser comparado com a instância.An object to compare to this instance.

Retornos

Int32

Um número assinado que indica os valores relativos dessa instância e de value.A signed number indicating the relative values of this instance and value.

Valor retornadoReturn value DescriçãoDescription
Um inteiro negativoA negative integer Esta instância é menor que value.This instance is less than value.
ZeroZero Esta instância é igual a value.This instance is equal to value.
Um inteiro positivoA positive integer Esta instância é maior que value.This instance is greater than value.

Implementações

Exemplos

O exemplo a seguir chama o CompareTo(Guid) método para comparar um valor de GUID com dois valores GUID semelhantes.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

Comentários

O CompareTo método compara os GUIDs como se eles fossem valores fornecidos para o Guid(Int32, Int16, Int16, Byte[]) Construtor, da seguinte maneira:The CompareTo method compares the GUIDs as if they were values provided to the Guid(Int32, Int16, Int16, Byte[]) constructor, as follows:

  • Ele compara os UInt32 valores e retorna um resultado se eles forem desiguais.It compares the UInt32 values, and returns a result if they are unequal. Se forem iguais, ele executará a próxima comparação.If they are equal, it performs the next comparison.

  • Ele compara os primeiros UInt16 valores e retorna um resultado se eles forem desiguais.It compares the first UInt16 values, and returns a result if they are unequal. Se forem iguais, ele executará a próxima comparação.If they are equal, it performs the next comparison.

  • Ele compara os segundo UInt16 valores e retorna um resultado se eles forem desiguais.It compares the second UInt16 values, and returns a result if they are unequal. Se forem iguais, ele executará a próxima comparação.If they are equal, it performs the next comparison.

  • Se o executar uma comparação byte por byte dos próximos oito Byte valores.If performs a byte-by-byte comparison of the next eight Byte values. Quando ele encontra o primeiro par desigual, ele retorna o resultado.When it encounters the first unequal pair, it returns the result. Caso contrário, retornará 0 para indicar que os dois Guid valores são iguais.Otherwise, it returns 0 to indicate that the two Guid values are equal.

Observe que os oito bytes finais aparecem na representação de cadeia de caracteres de uma Guid na ordem inversa, de baixo byte para byte alto.Note that the final eight bytes appear in the string representation of a Guid in reverse order, from low byte to high byte. Por exemplo, na representação de cadeia de caracteres do Guid valor "01e75c83-c6f5-4192-b57e-7427cec5560d", os oito bytes finais são "b57e-7427cec5560d".For example, in the string representation of the Guid value "01e75c83-c6f5-4192-b57e-7427cec5560d", the final eight bytes are "b57e-7427cec5560d." Em outras palavras, os oito bytes finais são comparados em uma base byte a byte da esquerda para a direita, começando com 0xB5.In other words, the final eight bytes are compared on a byte-by-byte basis from left to right starting with 0xb5.

Se dois GUIDs tiverem valores iguais para um componente, o método compara o próximo componente.If two GUIDs have equal values for a component, the method compares the next component. Quando ele encontra um componente cujos valores são desiguais, ele retorna o resultado.When it finds a component whose values are unequal, it returns the result.

Esse método implementa a System.IComparable<T> interface e apresenta um pouco melhor do que o Guid.CompareTo método porque não precisa converter o value parâmetro em um 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.

Aplica-se a

CompareTo(Object)

Compara essa instância com um objeto especificado e retorna uma indicação dos 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

Um objeto a ser comparado ou null.An object to compare, or null.

Retornos

Int32

Um número assinado que indica os valores relativos dessa instância e de value.A signed number indicating the relative values of this instance and value.

Valor retornadoReturn value DescriçãoDescription
Um inteiro negativoA negative integer Esta instância é menor que value.This instance is less than value.
ZeroZero Esta instância é igual a value.This instance is equal to value.
Um inteiro positivoA positive integer Esta instância é maior do que value ou value é null.This instance is greater than value, or value is null.

Implementações

Exceções

value não é um Guid.value is not a Guid.

Exemplos

O exemplo a seguir usa o GuidAttribute atributo para atribuir um GUID a uma classe.The following example uses the GuidAttribute attribute to assign a GUID to a class. Ele recupera o valor desse GUID chamando o Attribute.GetCustomAttribute método e passando a Value Propriedade do GuidAttribute objeto retornado para o 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. Em seguida, ele compara esse GUID com uma 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

Comentários

O value parâmetro deve ser null ou uma instância de Guid ; caso contrário, uma exceção será lançada.The value parameter must be null or an instance of Guid; otherwise, an exception is thrown. Qualquer instância do Guid , independentemente de seu valor, é considerada maior que null .Any instance of Guid, regardless of its value, is considered greater than null.

O CompareTo método compara os GUIDs como se eles fossem valores fornecidos para o Guid Construtor, da seguinte maneira:The CompareTo method compares the GUIDs as if they were values provided to the Guid constructor, as follows:

  • Ele compara os Int32 valores e retorna um resultado se eles forem desiguais.It compares the Int32 values, and returns a result if they are unequal. Se forem iguais, ele executará a próxima comparação.If they are equal, it performs the next comparison.

  • Ele compara os primeiros Int16 valores e retorna um resultado se eles forem desiguais.It compares the first Int16 values, and returns a result if they are unequal. Se forem iguais, ele executará a próxima comparação.If they are equal, it performs the next comparison.

  • Ele compara os segundo Int16 valores e retorna um resultado se eles forem desiguais.It compares the second Int16 values, and returns a result if they are unequal. Se forem iguais, ele executará a próxima comparação.If they are equal, it performs the next comparison.

  • Se o executar uma comparação byte por byte dos próximos oito Byte valores.If performs a byte-by-byte comparison of the next eight Byte values. Quando ele encontra o primeiro par desigual, ele retorna o resultado.When it encounters the first unequal pair, it returns the result. Caso contrário, retornará 0 para indicar que os dois Guid valores são iguais.Otherwise, it returns 0 to indicate that the two Guid values are equal.

Se dois GUIDs tiverem valores iguais para um componente, o método compara o próximo componente.If two GUIDs have equal values for a component, the method compares the next component. Quando ele encontra um componente cujos valores são desiguais, ele retorna o resultado.When it finds a component whose values are unequal, it returns the result.

Observe que os oito bytes finais aparecem na representação de cadeia de caracteres de uma Guid na ordem inversa, de baixo byte para byte alto.Note that the final eight bytes appear in the string representation of a Guid in reverse order, from low byte to high byte. Por exemplo, na representação de cadeia de caracteres do Guid valor "01e75c83-c6f5-4192-b57e-7427cec5560d", os oito bytes finais são "b57e-7427cec5560d".For example, in the string representation of the Guid value "01e75c83-c6f5-4192-b57e-7427cec5560d", the final eight bytes are "b57e-7427cec5560d."

Aplica-se a