Guid.CompareTo Yöntem

Tanım

Bu örneği belirtilen bir nesneyle karşılaştırır veya Guid göreli değerlerinin bir göstergesini döndürür.

Aşırı Yüklemeler

CompareTo(Guid)

Bu örneği belirtilen Guid bir nesneyle karşılaştırır ve göreli değerlerinin bir göstergesini döndürür.

CompareTo(Object)

Bu örneği belirtilen nesne ile karşılaştırır ve göreli değerlerin bir göstergesini döndürür.

CompareTo(Guid)

Kaynak:
Guid.cs
Kaynak:
Guid.cs
Kaynak:
Guid.cs

Bu örneği belirtilen Guid bir nesneyle karşılaştırır ve göreli değerlerinin bir göstergesini döndürür.

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

Parametreler

value
Guid

Bu örnekle karşılaştırılacak bir nesne.

Döndürülenler

Bu örneğin ve valuedeğerlerini gösteren imzalı bir sayı.

Döndürülen değer Açıklama
Negatif bir tamsayı Bu örnek değerinden valueküçük.
Sıfır Bu örnek eşittir value.
Pozitif bir tamsayı Bu örnek değerinden valuebüyüktür.

Uygulamalar

Örnekler

Aşağıdaki örnek, bir GUID değerini benzer iki GUID değeriyle karşılaştırmak için yöntemini çağırır CompareTo(Guid) .

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

Açıklamalar

yöntemi GUID'leri CompareTo oluşturucuya Guid(Int32, Int16, Int16, Byte[]) sağlanan değerler gibi aşağıdaki gibi karşılaştırır:

  • Değerleri karşılaştırır UInt32 ve eşit olmayan bir sonuç döndürür. Eşitse, bir sonraki karşılaştırmayı gerçekleştirir.

  • İlk UInt16 değerleri karşılaştırır ve eşit olmayan bir sonuç döndürür. Eşitse, bir sonraki karşılaştırmayı gerçekleştirir.

  • İkinci UInt16 değerleri karşılaştırır ve eşit olmayan bir sonuç döndürür. Eşitse, bir sonraki karşılaştırmayı gerçekleştirir.

  • Sonraki sekiz Byte değerin bayt bayt karşılaştırmasını gerçekleştirirse. İlk eşit olmayan çiftle karşılaştığında sonucu döndürür. Aksi takdirde, iki Guid değerin eşit olduğunu belirtmek için 0 döndürür.

Son sekiz bayt değerinin, düşük bayttan yüksek bayta kadar ters sırada dize Guid gösteriminde göründüğünü unutmayın. Örneğin, "01e75c83-c6f5-4192-b57e-7427cec5560d" değerinin dize gösteriminde Guid , son sekiz bayt "b57e-7427cec5560d" şeklindedir. Başka bir deyişle, son sekiz bayt, 0xb5 ile başlayarak soldan sağa bayt bazında karşılaştırılır.

İki GUID bir bileşen için eşit değerlere sahipse, yöntemi bir sonraki bileşeni karşılaştırır. Değerleri eşit olmayan bir bileşen bulduğunda, sonucu döndürür.

Bu yöntem arabirimini uygular ve parametresini System.IComparable<T> bir değere dönüştürmesi gerekmediğinden yönteminden Guid.CompareTovalue biraz daha iyi performans Guid gösterir.

Şunlara uygulanır

CompareTo(Object)

Kaynak:
Guid.cs
Kaynak:
Guid.cs
Kaynak:
Guid.cs

Bu örneği belirtilen nesne ile karşılaştırır ve göreli değerlerin bir göstergesini döndürür.

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

Parametreler

value
Object

Karşılaştıracak bir nesne veya null.

Döndürülenler

Bu örneğin ve valuedeğerlerini gösteren imzalı bir sayı.

Döndürülen değer Açıklama
Negatif bir tamsayı Bu örnek değerinden valueküçük.
Sıfır Bu örnek eşittir value.
Pozitif bir tamsayı Bu örnek veya valuenulldeğerinden valuebüyüktür.

Uygulamalar

Özel durumlar

value bir Guiddeğildir.

Örnekler

Aşağıdaki örnek, bir sınıfa GuidAttribute GUID atamak için özniteliğini kullanır. Yöntemini çağırarak Attribute.GetCustomAttribute ve döndürülen GuidAttribute nesnenin özelliğini yöntemine Parse geçirerek Value bu GUID değerini alır. Ardından guid değerini bir değer dizisiyle karşılaştırır.

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

Açıklamalar

value parametresi veya örneği Guidolmalıdırnull; aksi takdirde bir özel durum oluşturulur. değerinden Guidbağımsız olarak herhangi bir örneği değerinden büyük nullolarak kabul edilir.

yöntemi GUID'leri CompareTo oluşturucuya Guid sağlanan değerler gibi aşağıdaki gibi karşılaştırır:

  • Değerleri karşılaştırır Int32 ve eşit olmayan bir sonuç döndürür. Eşitse, bir sonraki karşılaştırmayı gerçekleştirir.

  • İlk Int16 değerleri karşılaştırır ve eşit olmayan bir sonuç döndürür. Eşitse, bir sonraki karşılaştırmayı gerçekleştirir.

  • İkinci Int16 değerleri karşılaştırır ve eşit olmayan bir sonuç döndürür. Eşitse, bir sonraki karşılaştırmayı gerçekleştirir.

  • Sonraki sekiz Byte değerin bayt bayt karşılaştırmasını gerçekleştirirse. İlk eşit olmayan çiftle karşılaştığında sonucu döndürür. Aksi takdirde, iki Guid değerin eşit olduğunu belirtmek için 0 döndürür.

İki GUID bir bileşen için eşit değerlere sahipse, yöntemi bir sonraki bileşeni karşılaştırır. Değerleri eşit olmayan bir bileşen bulduğunda, sonucu döndürür.

Son sekiz bayt değerinin, düşük bayttan yüksek bayta kadar ters sırada dize Guid gösteriminde göründüğünü unutmayın. Örneğin, "01e75c83-c6f5-4192-b57e-7427cec5560d" değerinin dize gösteriminde Guid , son sekiz bayt "b57e-7427cec5560d" şeklindedir.

Şunlara uygulanır