Language

Guid.CompareTo メソッド

定義

このインスタンスを指定したオブジェクトまたは Guid と比較し、その相対値を示す値を返します。

オーバーロード

名前 説明
CompareTo(Guid)

このインスタンスを指定した Guid オブジェクトと比較し、その相対値を示す値を返します。

CompareTo(Object)

このインスタンスを指定したオブジェクトと比較し、その相対値を示す値を返します。

CompareTo(Guid)

ソース:
Guid.cs
ソース:
Guid.cs
ソース:
Guid.cs
ソース:
Guid.cs
ソース:
Guid.cs

このインスタンスを指定した Guid オブジェクトと比較し、その相対値を示す値を返します。

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

パラメーター

value
Guid

このインスタンスと比較するオブジェクト。

返品

このインスタンスと valueの相対値を示す符号付き数値。

戻り値 説明
負の整数 このインスタンスは value未満です。
ゼロ このインスタンスは、 valueと同じです。
正の整数 このインスタンスは valueより大きい。

実装

例

次の例では、 CompareTo(Guid) メソッドを呼び出して、GUID 値と 2 つの類似した 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

注釈

CompareTo メソッドは、GUID を次のように、Guid(Int32, Int16, Int16, Byte[]) コンストラクターに指定された値と比較します。

  • UInt32値を比較し、等しくない場合は結果を返します。 等しい場合は、次の比較を実行します。

  • 最初の UInt16 値を比較し、等しくない場合は結果を返します。 等しい場合は、次の比較を実行します。

  • 2 番目の UInt16 値を比較し、等しくない場合は結果を返します。 等しい場合は、次の比較を実行します。

  • if は、次の 8 つの Byte 値のバイト単位の比較を実行します。 最初の等しくないペアが検出されると、結果が返されます。 それ以外の場合は、2 つの Guid 値が等しいことを示す 0 を返します。

最後の 8 バイトは、下位バイトから高バイトまでの Guid の文字列形式で逆順に表示されることに注意してください。 たとえば、 Guid 値 "01e75c83-c6f5-4192-b57e-7427cec5560d" の文字列表現では、最後の 8 バイトは "b57e-7427cec5560d" です。つまり、最後の 8 バイトは、0xb5で始まる左から右にバイト単位で比較されます。

2 つの GUID に 1 つのコンポーネントの値が等しい場合、メソッドは次のコンポーネントを比較します。 値が等しくないコンポーネントが見つかると、結果が返されます。

このメソッドはSystem.IComparable<T> インターフェイスを実装し、Guid.CompareTo パラメーターをvalue値に変換する必要がないため、Guid メソッドよりも若干優れたパフォーマンスを発揮します。

適用対象

CompareTo(Object)

ソース:
Guid.cs
ソース:
Guid.cs
ソース:
Guid.cs
ソース:
Guid.cs
ソース:
Guid.cs

このインスタンスを指定したオブジェクトと比較し、その相対値を示す値を返します。

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

パラメーター

value
Object

比較するオブジェクト、または null。

返品

このインスタンスと valueの相対値を示す符号付き数値。

戻り値 説明
負の整数 このインスタンスは value未満です。
ゼロ このインスタンスは、 valueと同じです。
正の整数 このインスタンスが valueより大きいか、 value が null。

実装

例外

value は Guidではありません。

例

次の例では、 GuidAttribute 属性を使用して GUID をクラスに割り当てます。 この GUID の値を取得するには、Attribute.GetCustomAttribute メソッドを呼び出し、返されたValue オブジェクトのGuidAttribute プロパティをParse メソッドに渡します。 次に、その GUID を値の配列と比較します。

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

注釈

value パラメーターは、nullまたはGuidのインスタンスである必要があります。それ以外の場合は例外がスローされます。 Guidのインスタンスは、その値に関係なく、nullより大きいと見なされます。

CompareTo メソッドは、GUID を次のように、Guid コンストラクターに指定された値と比較します。

  • Int32値を比較し、等しくない場合は結果を返します。 等しい場合は、次の比較を実行します。

  • 最初の Int16 値を比較し、等しくない場合は結果を返します。 等しい場合は、次の比較を実行します。

  • 2 番目の Int16 値を比較し、等しくない場合は結果を返します。 等しい場合は、次の比較を実行します。

  • if は、次の 8 つの Byte 値のバイト単位の比較を実行します。 最初の等しくないペアが検出されると、結果が返されます。 それ以外の場合は、2 つの Guid 値が等しいことを示す 0 を返します。

2 つの GUID に 1 つのコンポーネントの値が等しい場合、メソッドは次のコンポーネントを比較します。 値が等しくないコンポーネントが見つかると、結果が返されます。

最後の 8 バイトは、下位バイトから高バイトまでの Guid の文字列形式で逆順に表示されることに注意してください。 たとえば、 Guid 値 "01e75c83-c6f5-4192-b57e-7427cec5560d" の文字列表現では、最後の 8 バイトは "b57e-7427cec5560d" です。

適用対象