Represents a globally unique identifier (GUID).
Namespace:
System
Assembly:
mscorlib (in mscorlib.dll)
Visual Basic (Declaration)
<SerializableAttribute> _
<ComVisibleAttribute(True)> _
Public Structure Guid _
Implements IFormattable, IComparable, IComparable(Of Guid), _
IEquatable(Of Guid)
[SerializableAttribute]
[ComVisibleAttribute(true)]
public struct Guid : IFormattable, IComparable,
IComparable<Guid>, IEquatable<Guid>
[SerializableAttribute]
[ComVisibleAttribute(true)]
public value class Guid : IFormattable, IComparable,
IComparable<Guid>, IEquatable<Guid>
JScript supports the use of structures, but not the declaration of new ones.
A GUID is a 128-bit integer (16 bytes) that can be used across all computers and networks wherever a unique identifier is required. Such an identifier has a very low probability of being duplicated.
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
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 MyTestClass
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 Main()
' 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.
System.Console.WriteLine("IMyInterface Attribute: " + CType(IMyInterfaceAttribute, GuidAttribute).Value)
' 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
System.Console.WriteLine("myGuid1 equals myGuid2")
Else
System.Console.WriteLine("myGuid1 not equals myGuid2")
End If
' Equality operator can also be used to determine if two guids have same value.
If myGuid1.ToString() = myGuid2.ToString() Then
System.Console.WriteLine("myGuid1 == myGuid2")
Else
System.Console.WriteLine("myGuid1 != myGuid2")
End If
' CompareTo returns 0 if the guids have same value.
If myGuid1.CompareTo(myGuid2) = 0 Then
System.Console.WriteLine("myGuid1 compares to myGuid2")
Else
System.Console.WriteLine("myGuid1 does not compare to myGuid2")
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 MyTestClass : 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 Main( string []args )
{
// 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.
System.Console.WriteLine( "IMyInterface Attribute: " + ((GuidAttribute)IMyInterfaceAttribute).Value );
// 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 ) )
System.Console.WriteLine( "myGuid1 equals myGuid2" );
else
System.Console.WriteLine( "myGuid1 not equals myGuid2" );
// Equality operator can also be used to determine if two guids have same value.
if ( myGuid1 == myGuid2 )
System.Console.WriteLine( "myGuid1 == myGuid2" );
else
System.Console.WriteLine( "myGuid1 != myGuid2" );
// CompareTo returns 0 if the guids have same value.
if ( myGuid1.CompareTo( myGuid2 ) == 0 )
System.Console.WriteLine( "myGuid1 compares to myGuid2" );
else
System.Console.WriteLine( "myGuid1 does not compare to myGuid2" );
System.Console.ReadLine();
//Output.
//IMyInterface Attribute: F9168C5E-CEB2-4faa-B6BF-329BF39FA1E4
//myGuid1 equals myGuid2
//myGuid1 == myGuid2
//myGuid1 compares to myGuid2
}
}
using namespace System;
using namespace System::Runtime::InteropServices;
// Guid for the interface IMyInterface.
[Guid("F9168C5E-CEB2-4faa-B6BF-329BF39FA1E4")]
public interface class IMyInterface
{
public:
void MyMethod();
};
// Guid for the coclass MyTestClass.
[Guid("936DA01F-9ABD-4d9d-80C7-02AF85C822A8")]
public ref class MyTestClass: public IMyInterface
{
public:
// 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.
virtual void MyMethod(){}
};
int main()
{
// 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( IMyInterface::typeid, GuidAttribute::typeid );
// The Value property of GuidAttribute returns a string.
System::Console::WriteLine( String::Concat( "IMyInterface Attribute: ", (dynamic_cast<GuidAttribute^>(IMyInterfaceAttribute))->Value ) );
// Using the string to create a guid.
Guid myGuid1 = Guid(dynamic_cast<GuidAttribute^>(IMyInterfaceAttribute)->Value);
// Using a byte array to create a guid.
Guid myGuid2 = Guid(myGuid1.ToByteArray());
// Equals is overridden and so value comparison is done though references are different.
if ( myGuid1.Equals( myGuid2 ) )
System::Console::WriteLine( "myGuid1 equals myGuid2" );
else
System::Console::WriteLine( "myGuid1 not equals myGuid2" );
// Equality operator can also be used to determine if two guids have same value.
if ( myGuid1 == myGuid2 )
System::Console::WriteLine( "myGuid1 == myGuid2" );
else
System::Console::WriteLine( "myGuid1 != myGuid2" );
// CompareTo returns 0 if the guids have same value.
if ( myGuid1.CompareTo( myGuid2 ) == 0 )
System::Console::WriteLine( "myGuid1 compares to myGuid2" );
else
System::Console::WriteLine( "myGuid1 does not compare to myGuid2" );
//Output.
//IMyInterface Attribute: F9168C5E-CEB2-4faa-B6BF-329BF39FA1E4
//myGuid1 equals myGuid2
//myGuid1 == myGuid2
//myGuid1 compares to myGuid2
}
import System;
import System.Runtime.InteropServices;
// Guid for the interface IMyInterface.
Guid("F9168C5E-CEB2-4faa-B6BF-329BF39FA1E4") interface IMyInterface
{
function MyMethod();
}
// Guid for the coclass MyTestClass.
public Guid("936DA01F-9ABD-4d9d-80C7-02AF85C822A8") class MyTestClass 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 function MyMethod() {}
public static function Main()
{
// 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.
var IMyInterfaceAttribute : Attribute = Attribute.GetCustomAttribute(Type.GetType("IMyInterface"), GuidAttribute);
// The Value property of GuidAttribute returns a string.
System.Console.WriteLine( "IMyInterface Attribute: " + (GuidAttribute(IMyInterfaceAttribute)).Value );
// Using the string to create a guid.
var myGuid1 : Guid = new Guid( (GuidAttribute(IMyInterfaceAttribute)).Value );
// Using a byte array to create a guid.
var myGuid2 : Guid = new Guid ( myGuid1.ToByteArray() );
// Equals is overridden and so value comparison is done though references are different.
if ( myGuid1.Equals( myGuid2 ) )
System.Console.WriteLine( "myGuid1 equals myGuid2" );
else
System.Console.WriteLine( "myGuid1 not equals myGuid2" );
// Equality operator can also be used to determine if two guids have same value.
if ( myGuid1 == myGuid2 )
System.Console.WriteLine( "myGuid1 == myGuid2" );
else
System.Console.WriteLine( "myGuid1 != myGuid2" );
// CompareTo returns 0 if the guids have same value.
if ( myGuid1.CompareTo( myGuid2 ) == 0 )
System.Console.WriteLine( "myGuid1 compares to myGuid2" );
else
System.Console.WriteLine( "myGuid1 does not compare to myGuid2" );
System.Console.ReadLine();
//Output.
//IMyInterface Attribute: F9168C5E-CEB2-4faa-B6BF-329BF39FA1E4
//myGuid1 equals myGuid2
//myGuid1 == myGuid2
//myGuid1 compares to myGuid2
}
}
MyTestClass.Main();
Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.
Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008 R2, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Windows CE, Windows Mobile for Smartphone, Windows Mobile for Pocket PC, Xbox 360, Zune
The .NET Framework and .NET Compact Framework do not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.
.NET Framework
Supported in: 3.5, 3.0, 2.0, 1.1, 1.0
.NET Compact Framework
Supported in: 3.5, 2.0, 1.0
XNA Framework
Supported in: 3.0, 2.0, 1.0
Reference