2016-02-05 37 views
2

在C#中,有沒有辦法要求對某個屬性的訪問是無效的。對於可能返回null的屬性,如果在沒有測試null的情況下使用該屬性,那麼編譯時錯誤將會很好。要求對C#中的某個屬性進行無效訪問#

+0

他們*考慮*將不可空的引用添加到未來版本的C#中,此時可空引用可能會得到更多的編譯器警告。 –

+0

有沒有內置的這種東西,但你可以使用像ReSharper插件,它會警告你這種情況 –

+0

不在編譯時間沒有。您大概可以使用靜態分析工具。這裏有一個很好的列表:http://stackoverflow.com/questions/38635/what-static-analysis-tools-are-available-for-c – Mark

回答

1

不,這是不可能的。如果一個類型是可空的,那麼在編譯時就沒有辦法做這樣的檢查。編譯器無法確定在編譯時檢索到的值是否爲空。

這段代碼如何?你怎麼知道someVariable沒有設置爲null?也許即使有反思?

public string Property 
{ 
    get { return someVariable; } 
} 

你應該做的是確保屬性永遠不爲空或者作爲消費者來正確處理這些情況。

+1

爲什麼downvote? –

+0

「不可能」是一個非常強烈的說法。如果編輯器可以枚舉所有對標識符的引用,它肯定可以遍歷這些引用來查看它們是否爲null)2)對null或3)進行顯式測試將拋出,如果爲null。 (我不是downvoter) – bbsimonbb

+2

不,這是不可能的,因爲你不能進行這樣的分析,因爲你不知道外部因素,如反思。 –