【问题标题】:How to convert a GUID to a string in C#?如何在 C# 中将 GUID 转换为字符串?
【发布时间】:2010-12-14 14:17:29
【问题描述】:

我是 C# 新手。

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

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

在 C# 中,我正在尝试做

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

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

【问题讨论】:

    标签: c# string guid


    【解决方案1】:

    您在ToString 之后缺少(),它将其标记为函数调用与函数引用(传递给委托的那种),这就是为什么c# 没有AddressOf 运算符,这是暗示的根据你的输入方式。

    试试这个:

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

        以下是每个格式说明符的输出示例:

        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

        Run this yourself.

        【讨论】:

          【解决方案4】:

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

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

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

          【讨论】:

            【解决方案5】:
            String guid = System.Guid.NewGuid().ToString();
            

            否则它是一个委托。

            【讨论】:

              【解决方案6】:

              你需要

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

              【讨论】:

                【解决方案7】:

                你写了吗

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

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

                注意括号。

                【讨论】:

                  【解决方案8】:

                  ToString 末尾缺少 ()。

                  【讨论】:

                    【解决方案9】:
                    Guid guidId = Guid.Parse("xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx");
                    string guidValue = guidId.ToString("D"); //return with hyphens
                    

                    【讨论】:

                      【解决方案10】:

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

                      所以关于你可以使用的其他答案:

                      guid.ToString("", CultureInfo.InvariantCulture)
                      

                      "" 可以替换为:N、D、B、P 和 X,更多信息请参见this comment

                      例如here

                      【讨论】:

                        猜你喜欢
                        • 1970-01-01
                        • 1970-01-01
                        • 1970-01-01
                        • 1970-01-01
                        • 1970-01-01
                        • 1970-01-01
                        • 1970-01-01
                        • 2013-07-30
                        • 2011-01-01
                        相关资源
                        最近更新 更多