如何在C#中将GUID转换为字符串?

93

我是C#的新手。

我知道在vb.net中可以这样做:

Dim guid as string = System.Guid.NewGuid.ToString

我正在尝试在C#中实现

String guid = System.Guid.NewGuid().ToString;

但我收到一个错误信息 "无法将方法组'ToString'转换为非委托类型'string'。您是否打算调用该方法??"

10个回答

143
根据MSDN所述,方法Guid.ToString(string format)根据提供的格式说明符返回此Guid实例值的字符串表示形式。
示例:
  • guidVal.ToString()guidVal.ToString("D")返回由连字符分隔的32个十六进制数字:00000000-0000-0000-0000-000000000000
  • guidVal.ToString("N")返回32个十六进制数字:00000000000000000000000000000000
  • guidVal.ToString("B")返回由大括号包围、由连字符分隔的32个十六进制数字:{00000000-0000-0000-0000-000000000000}
  • guidVal.ToString("P")返回由括号包围、由连字符分隔的32个十六进制数字:(00000000-0000-0000-0000-000000000000)

129

你错过了在 ToString 后面加上 () 的步骤,这样可以将其标记为函数调用而不是函数引用(委托所需的类型),顺便说一下,这就是为什么 c# 没有 AddressOf 运算符的原因,因为它在输入方式上是暗示的。

尝试这个:

string guid = System.Guid.NewGuid().ToString();

26
以下是每个格式说明符的输出示例:
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}}

默认值为D

点击此处自行运行


9

Did you write

String guid = System.Guid.NewGuid().ToString;

或者

String guid = System.Guid.NewGuid().ToString();

注意括号。


9
在Visual Basic中,您可以在不使用括号(())的情况下调用无参方法。但在C#中,这是强制性的。因此,您应该写成:
String guid = System.Guid.NewGuid().ToString();

没有花括号,你将方法本身(而不是其结果)分配给变量guid,显然该方法不能转换为String,因此出现错误。

7

您需要

String guid = System.Guid.NewGuid().ToString();

6
String guid = System.Guid.NewGuid().ToString();

否则它就是一个委托。

5

你的 ToString 方法缺少括号 ()。


4
Guid guidId = Guid.Parse("xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx");
string guidValue = guidId.ToString("D"); //return with hyphens

2

根据Sonar规则,您应该尽可能保护自己,并在可能的情况下使用System.globalization,如DateTime.ToString()

因此,关于其他答案,您可以使用:

guid.ToString("", CultureInfo.InvariantCulture)

其中""可以替换为:N、D、B、P和X,更多信息请参见此评论

示例请参见这里


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接