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

时间:2016-02-26 00:36:53

标签: c# guid

如果我尝试转换可以为空的GUID ToString(),它可以正常工作,但我尝试通过myGuid.ToString("N")从GUID中删除“连字符”我收到一条IntelliSense错误,内容为:“方法ToString没有重载method接受一个参数“。

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

知道如何让它发挥作用吗?

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

1 个答案:

答案 0 :(得分:8)

Nullable<T>所属的

Guid?不会为.ToString(string)提供过载。它只提供每个对象都有的无参数重载。

您可以使用

获得所需内容
var string4 = nullableGuid.Value.ToString("N");

这保证在您之前检查过nullableGuid为非null时有效。

使用C#6你也可以写

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

无需单独的空检查。