Guid.CompareTo メソッド

定義

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

オーバーロード

CompareTo(Guid)

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

CompareTo(Object)

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

CompareTo(Guid)

ソース:
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 の値を比較し、等しくない場合は結果を返します。 等しい場合は、次の比較を実行します。

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

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

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

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

適用対象

CompareTo(Object)

ソース:
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 より大きいか、または valuenull です。

実装

例外

valueGuid ではありません。

次の例では、 属性を GuidAttribute 使用して GUID をクラスに割り当てます。 メソッドを呼び出し、返されたGuidAttributeオブジェクトの プロパティを Attribute.GetCustomAttribute メソッドにValue渡すことで、この GUID の値を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 の値を比較し、等しくない場合は結果を返します。 等しい場合は、次の比較を実行します。

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

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

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

適用対象