2017-03-01 64 views
2

我使用C#6,我有以下幾點:檢查空在C#6默認值

public class Information { 
    public String[] Keywords { get; set; } 
} 

Information information = new Information { 
    Keywords = new String[] { "A", "B" }; 
} 

String keywords = String.Join(",", information?.Keywords ?? String.Empty); 

我檢查,如果信息爲空(在我真正的代碼,它可以)。如果它不是加入String.Empty,因爲String.Join在嘗試加入null時會給出錯誤。如果它不是null,那麼只需加入information.Keywords。

不過,我得到這個錯誤:

Operator '??' cannot be applied to operands of type 'string[]' and 'string' 

我一直在尋找的幾個博客,據說這會工作。

我錯過了什麼嗎?

執行此檢查並將字符串連接到一行中的最佳選擇是什麼?

回答

9

由於類型必須匹配?? (null-coalescing)運算符的任一側,所以應該傳遞一個字符串數組,在這種情況下,您可以傳遞一個空字符串數組。

String keywords = String.Join(",", information?.Keywords ?? new string[0]); 
+1

修復它。我錯過了不匹配的類型。 –

+0

@MiguelMoura您特別引用了儘可能多的錯誤信息... – Servy

+0

@Servy我錯過了解錯誤短語。我解釋爲操作數?不能應用於String []和String類型,而不能解釋爲類型不匹配。看到? –

1

最好的選擇將是加入字符串前檢查null

var keywords = information?.Keywords == null ? "" : string.Join(",", information.Keywords);