2014-11-02 38 views
0

我有下面的代碼塊它是使用?? Operator初始化:Visual Studio的警告:X是從來沒有分配給

private string _name; 
    public string Name 
    { 
     get { return _name ?? string.Empty; } 
    } 

我猜想,這個代碼是有效的,因爲它的工作原理,但我得到以下警告在我的錯誤列表:

「_name」從未分配,並且將永遠有它的默認值空

有沒有辦法來麥e Visual Studio對此停止警告?

+0

有可能是在VS一個選項來禁用警告,但你也可以'private string _name =「」;'。 – Tim 2014-11-02 10:10:07

+0

''''''操作符永遠不會初始化任何內容,並且鏈接到的文檔不會聲明它。 – hvd 2014-11-02 10:17:53

回答

4

有沒有辦法讓Visual Studio停止警告呢?

最好的辦法是瞭解警告,修復它表明的bug。

如果您從未分配到_name這意味着從_name讀取將始終返回null。那真的是你想要的嗎?

You can also suppress this warning.

還要注意,??簡單地計算其操作數的新值。它不會爲任何事物分配新的值。

+0

什麼錯誤?如果我沒有弄錯,這個警告有2個部分:1)''_name'永遠不會被分配給',這是不正確的,因爲不會有它不會被分配的情況。 2)'並且將始終具有其默認值null'也因爲我上面提到的相同原因而不是真的 – Yoav 2014-11-02 10:17:40

+0

您將分配給它的位置?不在顯示的代碼中。你可能會認爲''''''''在你調用「* initialization *」之後寫入'_name'?事實並非如此。我應該馬上拿起這個詞並糾正它。 – usr 2014-11-02 10:19:01

+0

在你發佈的代碼片段中,'_name'絕對不會被分配給。你的屬性是一個只讀屬性,返回'_name'的值,如果它爲null,則返回null。吸氣劑不分配任何東西。 – Tim 2014-11-02 10:19:14

2

初始化_name明確:

private string _name = null; 

或者

private string _name = String.Empty; 

然後,你將不會有任何警告....

相關問題