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

时间:2009-11-09 11:01:07

标签: c# string guid

我是C#的新手。

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

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

在C#中,我正在尝试

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

但我得到一个“无法将方法组'ToString'转换为非委托类型'字符串'。你打算调用方法吗?”错误。

9 个答案:

答案 0 :(得分:75)

根据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}

答案 1 :(得分:74)

你错过()之后的ToString,它将它标记为函数调用与函数引用(传递给代理的类型),顺便说一句,这就是为什么c#没有{{1}操作符,它是如何键入它的。

试试这个:

AddressOf

答案 2 :(得分:8)

在Visual Basic中,您可以调用无参数的方法而不使用大括号(())。在C#中,它们是强制性的。所以你应该写:

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

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

答案 3 :(得分:6)

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

否则它是代表。

答案 4 :(得分:5)

你需要

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

答案 5 :(得分:5)

你在ToString的末尾缺少()。

答案 6 :(得分:4)

你写过吗

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

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

注意括号

答案 7 :(得分:3)

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

答案 8 :(得分:2)

遵循Sonar规则,您应该尽可能保护自己并使用 System.globalisation尽可能DateTime.ToString()

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

guid.ToString("", CultureInfo.InvariantCulture)

其中""可以替换为:N,D,B,P和X,有关更多信息,请参见https://github.com/mifi/stacktracify

示例this comment