在C#中,有沒有辦法要求對某個屬性的訪問是無效的。對於可能返回null的屬性,如果在沒有測試null的情況下使用該屬性,那麼編譯時錯誤將會很好。要求對C#中的某個屬性進行無效訪問#
回答
不,這是不可能的。如果一個類型是可空的,那麼在編譯時就沒有辦法做這樣的檢查。編譯器無法確定在編譯時檢索到的值是否爲空。
這段代碼如何?你怎麼知道someVariable
沒有設置爲null?也許即使有反思?
public string Property
{
get { return someVariable; }
}
你應該做的是確保屬性永遠不爲空或者作爲消費者來正確處理這些情況。
爲什麼downvote? –
「不可能」是一個非常強烈的說法。如果編輯器可以枚舉所有對標識符的引用,它肯定可以遍歷這些引用來查看它們是否爲null)2)對null或3)進行顯式測試將拋出,如果爲null。 (我不是downvoter) – bbsimonbb
不,這是不可能的,因爲你不能進行這樣的分析,因爲你不知道外部因素,如反思。 –
由其發明人將空引用保持爲「My Billion Dollar Mistake」!在absence of non-nullable reference types中,使用code contracts和visual studio add-in以最小化空引用異常。
- 1. 無法訪問ZF2請求對象的某些屬性
- 2. C#屬性無法訪問
- 3. 無法訪問屬性C++
- 4. 無效的對象訪問C++
- 5. C#類庫,訪問對象的屬性
- 6. 無法訪問對象的屬性
- 7. 無法訪問子對象的屬性
- 8. 無法訪問的JavaScript對象屬性
- 9. 無法訪問對象的屬性
- 10. 無法訪問javascript對象的屬性
- 11. 無法訪問對象的屬性
- 12. 無法訪問對象的子屬性。
- 13. 我無法訪問對象的屬性
- 14. 訪問屬性 - C#
- 15. 訪問對象屬性中
- 16. 在JavaScript中對氣泡進行排序如何訪問屬性
- 17. 無法從C++文件(Cocos2D/Box2d)中訪問對象屬性
- 18. 如何使用無效字符訪問對象屬性
- 19. 在另一個屬性中訪問一個對象屬性
- 20. 無法訪問LINQ屬性與C#
- 21. Qt的C++訪問屬性
- 22. 無法訪問JavaScript對象屬性
- 23. 我無法訪問對象屬性
- 24. TWIG無法訪問對象屬性
- 25. 笨:無法訪問對象屬性
- 26. 無法訪問JSON對象屬性
- 27. 無法訪問對象屬性angularjs
- 28. 無法訪問JavaScript對象屬性?
- 29. 無法訪問對象屬性
- 30. 無法訪問JSON對象屬性
他們*考慮*將不可空的引用添加到未來版本的C#中,此時可空引用可能會得到更多的編譯器警告。 –
有沒有內置的這種東西,但你可以使用像ReSharper插件,它會警告你這種情況 –
不在編譯時間沒有。您大概可以使用靜態分析工具。這裏有一個很好的列表:http://stackoverflow.com/questions/38635/what-static-analysis-tools-are-available-for-c – Mark