Guid.CompareTo Method (Object)

[ This article is for Windows Phone 8 developers. If you’re developing for Windows 10, see the latest documentation. ]

Compares this instance to a specified object and returns an indication of their relative values.

Namespace:  System
Assembly:  mscorlib (in mscorlib.dll)

Syntax

Public Function CompareTo ( _
    value As Object _
) As Integer
public int CompareTo(
    Object value
)

Parameters

  • value
    Type: System..::.Object
    An object to compare, or nullNothingnullptra null reference (Nothing in Visual Basic).

Return Value

Type: System..::.Int32
A signed number indicating the relative values of this instance and value.

Value

Description

A negative integer

This instance is less than value.

Zero

This instance is equal to value.

A positive integer

This instance is greater than value.

-or-

value is nullNothingnullptra null reference (Nothing in Visual Basic).

Implements

IComparable..::.CompareTo(Object)

Exceptions

Exception Condition
ArgumentException

value is not a Guid.

Remarks

Any instance of Guid, regardless of its value, is considered greater than nullNothingnullptra null reference (Nothing in Visual Basic).

value must be nullNothingnullptra null reference (Nothing in Visual Basic) or an instance of Guid; otherwise, an exception is thrown.

Examples

The following code sample demonstrates how to attach and read a Guid object as an attribute on a user-defined class or interface.

Imports System.Runtime.InteropServices

' Guid for the interface IMyInterface.
<Guid("F9168C5E-CEB2-4faa-B6BF-329BF39FA1E4")> _
Interface IMyInterface
   Sub MyMethod()
End Interface

' Guid for the coclass MyTestClass.
<Guid("936DA01F-9ABD-4d9d-80C7-02AF85C822A8")> _
Public Class Example
   Implements IMyInterface

   ' Run regasm on this assembly to create .reg and .tlb files.
   ' Reg file can be used to register this coclass in the registry.
   ' Tlb file will be used to do interop.
   Public Sub MyMethod() Implements IMyInterface.MyMethod
   End Sub

   Public Shared Sub Demo(ByVal outputBlock As System.Windows.Controls.TextBlock)
      ' Example addresses the following in System.Runtime.InterOpServices.GuidAttribute.
      ' How to specify the attribute on interface/coclass.
      ' Retrieve the GuidAttribute from an interface/coclass.
      ' Value property on GuidAttribute class.
      ' Example addresses the following in System.Guid.
      ' Constructor Guid(string).
      ' Constructor Guid(ByteArray).
      ' Equals.
      ' Operator ==.
      ' CompareTo.
      Dim IMyInterfaceAttribute As Attribute = Attribute.GetCustomAttribute(GetType(IMyInterface), GetType(GuidAttribute))

      ' The Value property of GuidAttribute returns a string. 
      outputBlock.Text += String.Format("IMyInterface Attribute: " + CType(IMyInterfaceAttribute, GuidAttribute).Value) & vbCrLf

      ' Using the string to create a guid.
      Dim myGuid1 As New Guid(CType(IMyInterfaceAttribute, GuidAttribute).Value)
      ' Using a byte array to create a guid.
      Dim myGuid2 As New Guid(myGuid1.ToByteArray())

      ' Equals is overridden and so value comparison is done though references are different.
      If myGuid1.Equals(myGuid2) Then
         outputBlock.Text &= "myGuid1 equals myGuid2" & vbCrLf
      Else
         outputBlock.Text &= "myGuid1 not equals myGuid2" & vbCrLf
      End If
      ' Equality operator can also be used to determine if two guids have same value.
      If myGuid1.ToString() = myGuid2.ToString() Then
         outputBlock.Text &= "myGuid1 == myGuid2" & vbCrLf
      Else
         outputBlock.Text &= "myGuid1 != myGuid2" & vbCrLf
      End If
      ' CompareTo returns 0 if the guids have same value.
      If myGuid1.CompareTo(myGuid2) = 0 Then
         outputBlock.Text &= "myGuid1 compares to myGuid2" & vbCrLf
      Else
         outputBlock.Text &= "myGuid1 does not compare to myGuid2" & vbCrLf
      End If

      System.Console.ReadLine()

      'Output:
      'IMyInterface Attribute: F9168C5E-CEB2-4faa-B6BF-329BF39FA1E4
      'myGuid1 equals myGuid2
      'myGuid1 == myGuid2
      'myGuid1 compares to myGuid2
   End Sub
End Class
using System;
using System.Runtime.InteropServices;

// Guid for the interface IMyInterface.
[Guid("F9168C5E-CEB2-4faa-B6BF-329BF39FA1E4")]
interface IMyInterface
{
   void MyMethod();
}

// Guid for the coclass MyTestClass.
[Guid("936DA01F-9ABD-4d9d-80C7-02AF85C822A8")]
public class Example : IMyInterface
{
   // Run regasm on this assembly to create .reg and .tlb files.
   // Reg file can be used to register this coclass in the registry.
   // Tlb file will be used to do interop.

   public void MyMethod() { }

   public static void Demo(System.Windows.Controls.TextBlock outputBlock)
   {
      // Example addresses the following in System.Runtime.InterOpServices.GuidAttribute.
      // How to specify the attribute on interface/coclass.
      // Retrieve the GuidAttribute from an interface/coclass.
      // Value property on GuidAttribute class.

      // Example addresses the following in System.Guid.
      // Constructor Guid(string).
      // Constructor Guid(ByteArray).
      // Equals.
      // Operator ==.
      // CompareTo.

      Attribute IMyInterfaceAttribute = Attribute.GetCustomAttribute(typeof(IMyInterface), typeof(GuidAttribute));

      // The Value property of GuidAttribute returns a string. 
      outputBlock.Text += "IMyInterface Attribute: " + ((GuidAttribute)IMyInterfaceAttribute).Value + "\n";

      // Using the string to create a guid.
      Guid myGuid1 = new Guid(((GuidAttribute)IMyInterfaceAttribute).Value);
      // Using a byte array to create a guid.
      Guid myGuid2 = new Guid(myGuid1.ToByteArray());

      // Equals is overridden and so value comparison is done though references are different.
      if (myGuid1.Equals(myGuid2))
         outputBlock.Text += "myGuid1 equals myGuid2" + "\n";
      else
         outputBlock.Text += "myGuid1 not equals myGuid2" + "\n";

      // Equality operator can also be used to determine if two guids have same value.
      if (myGuid1 == myGuid2)
         outputBlock.Text += "myGuid1 == myGuid2" + "\n";
      else
         outputBlock.Text += "myGuid1 != myGuid2" + "\n";

      // CompareTo returns 0 if the guids have same value.
      if (myGuid1.CompareTo(myGuid2) == 0)
         outputBlock.Text += "myGuid1 compares to myGuid2" + "\n";
      else
         outputBlock.Text += "myGuid1 does not compare to myGuid2" + "\n";

      System.Console.ReadLine();

      //Output.
      //IMyInterface Attribute: F9168C5E-CEB2-4faa-B6BF-329BF39FA1E4
      //myGuid1 equals myGuid2
      //myGuid1 == myGuid2
      //myGuid1 compares to myGuid2
   }
}

Version Information

Windows Phone OS

Supported in: 8.1, 8.0, 7.1, 7.0

Platforms

Windows Phone

See Also

Reference

Guid Structure

CompareTo Overload

System Namespace