引导?值 ToString("N") 不工作
Guid? value ToString("N") not working
如果我尝试将可为 null 的 GUID ToString() 转换,它工作得很好,但我尝试通过 myGuid.ToString("N")
从 GUID 中删除 "hyphens" 我收到一个 IntelliSense 错误,内容为:"No overload for method ToString method takes one arguments".
但是,如果我尝试使用 N 格式化程序将常规(不可为 null)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
}
}
Nullable<T>
,即您的 Guid?
,不为 .ToString(string)
提供重载。它只提供每个对象都有的无参数重载。
你可以通过
得到你想要的
var string4 = nullableGuid.Value.ToString("N");
这保证有效,因为您之前检查过 nullableGuid 是非空的。
使用 C# 6,您还可以编写
var string4 = nullableGuid?.Value.ToString("N");
不需要单独的 null 检查。
如果我尝试将可为 null 的 GUID ToString() 转换,它工作得很好,但我尝试通过 myGuid.ToString("N")
从 GUID 中删除 "hyphens" 我收到一个 IntelliSense 错误,内容为:"No overload for method ToString method takes one arguments".
但是,如果我尝试使用 N 格式化程序将常规(不可为 null)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
}
}
Nullable<T>
,即您的 Guid?
,不为 .ToString(string)
提供重载。它只提供每个对象都有的无参数重载。
你可以通过
得到你想要的var string4 = nullableGuid.Value.ToString("N");
这保证有效,因为您之前检查过 nullableGuid 是非空的。
使用 C# 6,您还可以编写
var string4 = nullableGuid?.Value.ToString("N");
不需要单独的 null 检查。