2016-02-26 21 views
3

如果我嘗試轉換可空的GUID ToString(),它很好地工作,但我嘗試從GUID刪除「連字符」myGuid.ToString("N")我得到一個智能感知錯誤,內容如下:「No方法ToString方法的重載需要一個參數「。Guid?值ToString(「N」)不起作用

但是,如果我嘗試將常規(不可爲空)的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

它是編譯器錯誤還是警告? (它仍然構建?) – krillgar

+2

'nullableGuid.Value.ToString(「N」);' – LarsTech

回答

8

Nullable<T>,你的Guid?是,沒有爲.ToString(string)提供過載。它只提供每個對象都有的無參數重載。

你可以得到你想要的東西通過

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

這是保證你以前檢查發現nullableGuid非空工作。

使用C#6你也可以寫

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

,而不需要單獨的空檢查。