我讀過Eric Lippert撰寫的寫得很好的blog post,但它沒有解釋可訪問性修飾符的具體情況。C#:爲什麼成員的可訪問性修飾符是可選的(而不是必需的)?
傳統的stackoverflow wisdom說總是明確指定「私人」,這意味着成員應該要求修改。
我讀過Eric Lippert撰寫的寫得很好的blog post,但它沒有解釋可訪問性修飾符的具體情況。C#:爲什麼成員的可訪問性修飾符是可選的(而不是必需的)?
傳統的stackoverflow wisdom說總是明確指定「私人」,這意味着成員應該要求修改。
那麼這不是沒有默認的修飾符集,如果沒有定義。在C#中,即使您沒有指定,您可能想知道程序執行方式(預期結果)的缺省修飾符時,也會設置默認修飾符。
的enum
,struct
,或class
將默認爲internal
典型條件下(在命名空間或只是坐在那裏獨自一人在一個文件中),但結構或類的內部聲明時,將默認爲private
。
所有方法,字段和屬性的默認訪問修飾符均爲「私有」。
可能是C#的設計者想要並且喜歡「宗教」打架是否包含退款訪問修飾符?
(在情況下,只有一個訪問級別是可能的,訪問修飾符通常不允許是:例如,一個接口的成員或枚舉總是public
,但它不是允許寫使A partial
方法是總是如此。因爲static
構造函數不能被顯式調用,所以沒有有意義的訪問級別。顯式接口實現對於直接調用並不是真正可見的,但可以通過接口類型自由訪問(如果接口類型從外部可見)名稱空間可以沒有訪問修飾符。)
與您的建議相反的規則urse是一個規則,表示不允許指定一個不會改變任何內容的修飾符。這意味着不能明確聲明名稱空間的直接成員(包括隱含的「全局名稱空間」),並且不能明確聲明internal
,並且類或結構(包括嵌套類型)的成員不能具有關鍵字private
。有些人使用這個慣例。
請注意,屬性和索引器的getter和setter不能指定冗餘訪問級別。這裏唯一允許的只是兩個訪問器中的一個(在這種情況下必須有兩個)來指定更嚴格的訪問。
因爲MS很酷:) – Tom
C#語言規範說:「當一個類成員聲明不包含任何訪問修飾符時,假定爲private」。爲了顯而易見,我仍然通常明確地輸出「私人」,儘管我知道有些人反對這個慣例。 –
http://www.cookcomputing.com/blog/archives/private-access-modifier-in-csharp –