2010-09-21 91 views
132

我試圖找到C#的各個方面的默認可見性的參考。類類型,字段,方法,枚舉等C#類和成員(字段,方法等)的默認可見性?

有人能與他們的默認可見性(即無前綴修飾)一起提供的這些名單?

+0

可能重複http://stackoverflow.com/questions/3675575/default -access-modifier-in-c) – 2010-09-21 19:18:00

+8

我不認爲它是重複的......該問題是特定的(這是什麼默認值?),這個是寬泛的(什麼是所有默認值?) – WernerCD 2010-09-21 20:25:52

回答

206

所有的你正在尋找的信息可以發現herehere(感謝Reed Copsey):

從第一環節:

類和結構是直接宣告命名空間內(換言之,不嵌套在其他類或結構中)可以是公共的或內部的。 如果未指定訪問修飾符,則內部爲默認值

...

類成員和結構成員,包括嵌套類和結構,訪問級別是默認私人。

...

接口默認爲內部訪問。

...

代表行爲像類和結構。默認情況下,它們在命名空間內直接聲明時具有內部訪問權限,嵌套時具有私有權限。


從第二個環節:

頂級類型,未嵌套在其他類型的,只能有內部或公共可訪問性。 這些類型的默認可訪問性是內部

而對於嵌套類型:

 
Members of Default member accessibility 
---------- ---------------------------- 
enum   public 
class   private 
interface  public 
struct  private 
+5

裏德的信息很好的彙編,但你忘了指定這種訪問修飾符也適用於方法。 – Joel 2014-07-26 16:07:54

+2

@Joel你是什麼意思?他明確指出「成員」。成員是數據和行爲,因此包含方法。 – rism 2015-02-12 08:27:00

+0

如果有任何vb.net開發人員正在看這個,vb是不同的。 vb類成員的默認範圍是'Public'。 'Enum'成員也是'Public'。可能不那麼容易混淆,因爲在你的情況下只使用顯式範圍,因爲機會很高,它會在某些時候被c#開發人員翻譯或讀取。不幸的是,vb.net中的代碼不會爲你做這件事。 – toddmo 2015-03-11 15:10:22

-1

默認爲private。除非它們嵌套,否則類是internal

+1

不是枚舉公共默認? – 2010-09-21 19:14:59

+4

@Jay:除非它們嵌套。 @Ryan:不,非默認的嵌套枚舉是內部的。 – 2010-09-21 19:18:07

+2

@Ryan:枚舉成員默認是公共的,但枚舉本身是內部的。 – 2010-09-21 19:20:34

7

默認情況下,一類訪問修飾符是internal。這意味着,一個類可以在同一個程序集中訪問。但是,如果我們希望從其他程序集訪問該類,那麼它必須公開。

+17

此信息已在其他答案中。你應該只回答一個問題,特別是像這樣的老問題,當你有額外的信息提供或者你認爲其他答案是錯誤的。無論如何,歡迎來到Stack Overflow。 – Gorpik 2012-09-27 14:57:40

2

從MSDN:

頂級類型,未嵌套在其他類型的,只能有internalpublic可訪問性。這些類型的默認可訪問性爲internal


嵌套類型,這是其他類型的成員,可以宣佈可接近,如下表中所示。

Default Nested Member Accessibility & Allowed Accessibility Modifiers

來源:Accessibility Levels (C# Reference)(12月6日第,2017)

[在C#默認接入改性劑](的