Ler em inglês

Compartilhar via


Guid.CompareTo Método

Definição

Compara essa instância com um objeto especificado ou Guid e retorna uma indicação dos valores relativos.

Sobrecargas

CompareTo(Guid)

Compara essa instância com um objeto Guid especificado e retorna uma indicação dos valores relativos.

CompareTo(Object)

Compara essa instância com um objeto especificado e retorna uma indicação dos valores relativos.

CompareTo(Guid)

Compara essa instância com um objeto Guid especificado e retorna uma indicação dos valores relativos.

public int CompareTo (Guid value);

Parâmetros

value
Guid

Um objeto a ser comparado com a instância.

Retornos

Int32

Um número assinado que indica os valores relativos dessa instância e de value.

Valor retornado Descrição
Um inteiro negativo Esta instância é menor que value.
Zero Esta instância é igual a value.
Um inteiro positivo Esta instância é maior que value.

Implementações

Exemplos

O exemplo a seguir chama o CompareTo(Guid) método para comparar um valor GUID com dois valores guid semelhantes.

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

Comentários

O CompareTo método compara os GUIDs como se fossem valores fornecidos ao Guid(Int32, Int16, Int16, Byte[]) construtor, da seguinte maneira:

  • Ele compara os UInt32 valores e retorna um resultado se eles forem desiguais. Se forem iguais, ele executará a próxima comparação.

  • Ele compara os primeiros UInt16 valores e retorna um resultado se eles forem diferentes. Se forem iguais, ele executará a próxima comparação.

  • Ele compara os segundos UInt16 valores e retorna um resultado se eles forem diferentes. Se forem iguais, ele executará a próxima comparação.

  • Se executar uma comparação byte por byte dos próximos oito Byte valores. Quando encontra o primeiro par desigual, ele retorna o resultado. Caso contrário, ele retornará 0 para indicar que os dois Guid valores são iguais.

Observe que os oito bytes finais aparecem na representação de cadeia de caracteres de uma Guid ordem inversa, de byte baixo a byte alto. 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". Em outras palavras, os oito bytes finais são comparados com base em bytes da esquerda para a direita, começando com 0xb5.

Se dois GUIDs tiverem valores iguais para um componente, o método comparará o próximo componente. Quando encontra um componente cujos valores são diferentes, ele retorna o resultado.

Esse método implementa a System.IComparable<T> interface e tem um desempenho ligeiramente melhor do que o Guid.CompareTo método porque não precisa converter o value parâmetro em um Guid valor.

Aplica-se a

.NET 7 e outras versões
Produto Versões
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0

CompareTo(Object)

Compara essa instância com um objeto especificado e retorna uma indicação dos valores relativos.

public int CompareTo (object? value);
public int CompareTo (object value);

Parâmetros

value
Object

Um objeto a ser comparado ou null.

Retornos

Int32

Um número assinado que indica os valores relativos dessa instância e de value.

Valor retornado Descrição
Um inteiro negativo Esta instância é menor que value.
Zero Esta instância é igual a value.
Um inteiro positivo Esta instância é maior do que value ou value é null.

Implementações

Exceções

value não é um Guid.

Exemplos

O exemplo a seguir usa o GuidAttribute atributo para atribuir um GUID a uma classe. Ele recupera o valor desse GUID chamando o Attribute.GetCustomAttribute método e passando a Value propriedade do objeto retornado GuidAttribute para o Parse método. Em seguida, ele compara esse GUID com uma 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

Comentários

O value parâmetro deve ser null ou uma instância de Guid; caso contrário, uma exceção é gerada. Qualquer instância de Guid, independentemente de seu valor, é considerada maior que null.

O CompareTo método compara os GUIDs como se fossem valores fornecidos ao Guid construtor, da seguinte maneira:

  • Ele compara os Int32 valores e retorna um resultado se eles forem diferentes. Se forem iguais, ele executará a próxima comparação.

  • Ele compara os primeiros Int16 valores e retorna um resultado se eles forem diferentes. Se forem iguais, ele executará a próxima comparação.

  • Ele compara os segundos Int16 valores e retorna um resultado se eles forem diferentes. Se forem iguais, ele executará a próxima comparação.

  • Se executar uma comparação byte por byte dos próximos oito Byte valores. Quando encontra o primeiro par desigual, ele retorna o resultado. Caso contrário, ele retornará 0 para indicar que os dois Guid valores são iguais.

Se dois GUIDs tiverem valores iguais para um componente, o método comparará o próximo componente. Quando encontra um componente cujos valores são diferentes, ele retorna o resultado.

Observe que os oito bytes finais aparecem na representação de cadeia de caracteres de uma Guid ordem inversa, de byte baixo a byte alto. 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".

Aplica-se a

.NET 7 e outras versões
Produto Versões
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8
.NET Standard 2.0, 2.1