如果我尝试转换可以为空的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
}
}
答案 0 :(得分:8)
Nullable<T>
所属的 Guid?
不会为.ToString(string)
提供过载。它只提供每个对象都有的无参数重载。
您可以使用
获得所需内容var string4 = nullableGuid.Value.ToString("N");
这保证在您之前检查过nullableGuid为非null时有效。
使用C#6你也可以写
var string4 = nullableGuid?.Value.ToString("N");
无需单独的空检查。