Bagikan melalui


Guid.CompareTo Metode

Definisi

Membandingkan instans ini dengan objek tertentu atau Guid dan mengembalikan indikasi nilai relatifnya.

Overload

Nama Deskripsi
CompareTo(Guid)

Membandingkan instans ini dengan objek tertentu Guid dan mengembalikan indikasi nilai relatifnya.

CompareTo(Object)

Membandingkan instans ini dengan objek tertentu dan mengembalikan indikasi nilai relatifnya.

CompareTo(Guid)

Sumber:
Guid.cs
Sumber:
Guid.cs
Sumber:
Guid.cs
Sumber:
Guid.cs
Sumber:
Guid.cs

Membandingkan instans ini dengan objek tertentu Guid dan mengembalikan indikasi nilai relatifnya.

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

Parameter

value
Guid

Objek untuk dibandingkan dengan instans ini.

Mengembalikan

Nomor yang ditandatangani menunjukkan nilai relatif instans ini dan value.

Mengembalikan nilai Deskripsi
Bilangan bulat negatif Instans ini kurang dari value.
Nol Instans ini sama dengan value.
Bilangan bulat positif Instans ini lebih besar dari value.

Penerapan

Contoh

Contoh berikut memanggil CompareTo(Guid) metode untuk membandingkan nilai GUID dengan dua nilai GUID serupa.

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

Keterangan

Metode ini CompareTo membandingkan GUID seolah-olah nilai tersebut disediakan untuk Guid(Int32, Int16, Int16, Byte[]) konstruktor, sebagai berikut:

  • Ini membandingkan UInt32 nilai, dan mengembalikan hasil jika tidak sama. Jika sama, ia melakukan perbandingan berikutnya.

  • Ini membandingkan nilai pertama UInt16 , dan mengembalikan hasil jika tidak sama. Jika sama, ia melakukan perbandingan berikutnya.

  • Ini membandingkan nilai kedua UInt16 , dan mengembalikan hasil jika tidak sama. Jika sama, ia melakukan perbandingan berikutnya.

  • Jika melakukan perbandingan byte-byte dari delapan Byte nilai berikutnya. Ketika menemukan pasangan tidak sama pertama, ia mengembalikan hasilnya. Jika tidak, nilai tersebut mengembalikan 0 untuk menunjukkan bahwa dua Guid nilai tersebut sama.

Perhatikan bahwa delapan byte terakhir muncul dalam representasi string dalam Guid urutan terbalik, dari byte rendah hingga byte tinggi. Misalnya, dalam representasi Guid string dari nilai "01e75c83-c6f5-4192-b57e-7427cec5560d", delapan byte terakhir adalah "b57e-7427cec5560d." Dengan kata lain, delapan byte terakhir dibandingkan berdasarkan byte-byte dari kiri ke kanan dimulai dengan 0xb5.

Jika dua GUID memiliki nilai yang sama untuk komponen, metode membandingkan komponen berikutnya. Ketika menemukan komponen yang nilainya tidak sama, nilainya akan mengembalikan hasilnya.

Metode ini mengimplementasikan System.IComparable<T> antarmuka dan berkinerja sedikit lebih baik daripada Guid.CompareTo metode karena tidak harus mengonversi value parameter menjadi Guid nilai.

Berlaku untuk

CompareTo(Object)

Sumber:
Guid.cs
Sumber:
Guid.cs
Sumber:
Guid.cs
Sumber:
Guid.cs
Sumber:
Guid.cs

Membandingkan instans ini dengan objek tertentu dan mengembalikan indikasi nilai relatifnya.

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

Parameter

value
Object

Objek untuk dibandingkan, atau null.

Mengembalikan

Nomor yang ditandatangani menunjukkan nilai relatif instans ini dan value.

Mengembalikan nilai Deskripsi
Bilangan bulat negatif Instans ini kurang dari value.
Nol Instans ini sama dengan value.
Bilangan bulat positif Instans ini lebih besar dari value, atau value .null

Penerapan

Pengecualian

valuebukan .Guid

Contoh

Contoh berikut menggunakan GuidAttribute atribut untuk menetapkan GUID ke kelas. Ini mengambil nilai GUID ini dengan memanggil Attribute.GetCustomAttribute metode dan meneruskan Value properti objek yang dikembalikan GuidAttribute ke Parse metode . Kemudian membandingkan GUID tersebut dengan array nilai.

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

Keterangan

Parameter value harus null atau sebuah instans dari Guid; jika tidak, pengecualian akan terjadi. Setiap contoh Guid, terlepas dari nilainya, dianggap lebih besar dari null.

Metode ini CompareTo membandingkan GUID seolah-olah nilai tersebut disediakan untuk Guid konstruktor, sebagai berikut:

  • Ini membandingkan Int32 nilai, dan mengembalikan hasil jika tidak sama. Jika sama, ia melakukan perbandingan berikutnya.

  • Ini membandingkan nilai pertama Int16 , dan mengembalikan hasil jika tidak sama. Jika sama, ia melakukan perbandingan berikutnya.

  • Ini membandingkan nilai kedua Int16 , dan mengembalikan hasil jika tidak sama. Jika sama, ia melakukan perbandingan berikutnya.

  • Jika melakukan perbandingan byte-byte dari delapan Byte nilai berikutnya. Ketika menemukan pasangan tidak sama pertama, ia mengembalikan hasilnya. Jika tidak, nilai tersebut mengembalikan 0 untuk menunjukkan bahwa dua Guid nilai tersebut sama.

Jika dua GUID memiliki nilai yang sama untuk komponen, metode membandingkan komponen berikutnya. Ketika menemukan komponen yang nilainya tidak sama, nilainya akan mengembalikan hasilnya.

Perhatikan bahwa delapan byte terakhir muncul dalam representasi string dalam Guid urutan terbalik, dari byte rendah hingga byte tinggi. Misalnya, dalam representasi Guid string dari nilai "01e75c83-c6f5-4192-b57e-7427cec5560d", delapan byte terakhir adalah "b57e-7427cec5560d."

Berlaku untuk