吉德?值 ToString(“N”) 不起作用

本文关键字:不起作用 ToString 吉德 | 更新日期: 2023-09-27 18:36:20

如果我尝试将可为空的 GUID 转换为字符串(),它工作得很好,但我尝试从 GUID 中删除"连字符",myGuid.ToString("N")我收到一个 IntelliSense 错误,内容如下:"方法 ToString 方法没有重载需要一个参数"。

但是,如果我尝试使用 N 格式化程序将常规(不可为空)GUID 转换为字符串,它可以正常工作。

知道如何让它工作吗?

public void DoSomething(Guid regularGuid, Guid? nullableGuid)
{
   if(nullableGuid != null)
   {
      var string1 = regularGuid.ToString("N"); // This works
      var string2 = nullableGuid.ToString(); // This works also
      var string3 = nullableGuid.ToString("N"); // This does NOT work
   }
}

吉德?值 ToString(“N”) 不起作用

Guid?实际上是Nullable<T>的,它不会为.ToString(string)提供重载。它仅提供每个对象都具有的无参数重载。

你可以通过使用得到你想要的

var string4 = nullableGuid.Value.ToString("N");

这保证可以正常工作,因为您之前检查过 nullableGuid 是否为非空。

使用 C# 6,您还可以编写

var string4 = nullableGuid?.Value.ToString("N");

无需单独的空检查。