How to convert a GUID to a string in C#?
Here are examples of output from each of the format specifiers:
N: cd26ccf675d64521884f1693c62ed303
D: cd26ccf6-75d6-4521-884f-1693c62ed303
B: {cd26ccf6-75d6-4521-884f-1693c62ed303}
P: (cd26ccf6-75d6-4521-884f-1693c62ed303)
X: {0xcd26ccf6,0x75d6,0x4521,{0x88,0x4f,0x16,0x93,0xc6,0x2e,0xd3,0x03}}
The default is D
.
Run this yourself.
In Visual Basic, you can call a parameterless method without the braces (()
). In C#, they're mandatory. So you should write:
String guid = System.Guid.NewGuid().ToString();
Without the braces, you're assigning the method itself (instead of its result) to the variable guid
, and obviously the method cannot be converted to a String
, hence the error.
According to MSDN the method Guid.ToString(string format)
returns a string representation of the value of this Guid instance, according to the provided format specifier.
Examples:
guidVal.ToString()
orguidVal.ToString("D")
returns 32 hex digits separated by hyphens:00000000-0000-0000-0000-000000000000
guidVal.ToString("N")
returns 32 hex digits:00000000000000000000000000000000
guidVal.ToString("B")
returns 32 hex digits separated by hyphens, enclosed in braces:{00000000-0000-0000-0000-000000000000}
guidVal.ToString("P")
returns 32 hex digits separated by hyphens, enclosed in parentheses:(00000000-0000-0000-0000-000000000000)
You're missing the ()
after ToString
that marks it as a function call vs. a function reference (the kind you pass to delegates), which incidentally is why c# has no AddressOf
operator, it's implied by how you type it.
Try this:
string guid = System.Guid.NewGuid().ToString();