回答
爲一個類型的默認可訪問性爲internal
,但該類型的成員默認的無障礙環境取決於類型。
一般而言,類的成員是private
默認,其中作爲結構的成員是public
默認。這因語言而異; C++的默認結構訪問修飾符是公共的,而C#則是私有的。
你們是否確定這會倒退?如果我在C#類中放置一個沒有訪問修飾符的方法,C#3.0編譯器會將它構建爲一個私有方法。 – 2010-05-26 23:19:43
Steve是正確的。類方法的默認可訪問性是'private'。自己嘗試一下。 – 2010-05-26 23:28:39
這個答案是正確的。剛剛在VS2010中進行了驗證,因爲我原本以爲這是錯誤的。 – Donnie 2010-05-26 23:33:18
對於一個類:如果未指定訪問修飾符,那麼Internal是默認值。
對於方法:如果未指定訪問修飾符,則Private是默認值。
是的,internal
是類的默認值,但private
是成員的默認值。
假設這是一個C#方法,因爲您有「.net」標記。
人們需要區分「成員」可訪問性和「類」可訪問性。
- C#中類成員(包括方法)的默認可訪問性是私有的。請參閱https://msdn.microsoft.com/en-us/library/ba0a1yw2(v=vs.140).aspx
- 類本身的默認可訪問性是內部的。
從C#編程語言,第三版由安德斯·海爾斯伯格等,部分10.3.5( 「類會員 - 訪問修飾符」)434頁:
一個類成員聲明可以具有五種可能的聲明可訪問性(§3.5.1)中的任何一種:
public
,protected internal
,protected
,internal
或private
。除protected internal
組合外,指定多個訪問修飾符時發生編譯時錯誤。 當類成員聲明不包含任何訪問修飾符時,假定爲private
。然後在部分11.2(「結構成員」)第539頁上 [着重礦]
和:
除了在§11.3指出的不同,類成員的描述中10.3節提供通過§10.14也適用於結構成員。
11.3節沒有提及訪問修飾符什麼,所以我的這個讀數意味着一個struct
的成員沒有訪問修飾符也private
默認。這符合what MSDN says和我自己的經驗。
哦,等等,還有一件事....
interface
方法聲明顧名思義當然public
的。所以下面的實現是public
,沒有明確的訪問修飾符。
public class MyClass : IEqualityComparer<MyClass>
bool IEqualityComparer<MyClass>.Equals(MyClass x , MyClass y) {}
}
類方法是私有的,默認情況下在.NET中是封閉的。 這意味着該方法僅在類中可見,不能被繼承類重寫。
- 1. 如何找到沒有顯式訪問修飾符的方法?
- 2. 檢查方法的訪問修飾符
- 3. 動態方法訪問修飾符
- 4. 方法有可能有雙重訪問修飾符嗎?
- 5. 有沒有辦法訪問另一個沒有public修飾符的包?
- 6. Delphi訪問修飾符
- 7. 內部訪問修飾符
- 8. 庫級訪問修飾符
- 9. EventInfo訪問修飾符
- 10. 動態訪問修飾符
- 11. 練習訪問修飾符
- 12. 類訪問修飾符
- 13. 保護訪問修飾符
- 14. 通過訪問修飾符
- 15. 包訪問(protected修飾符)
- 16. java中有沒有對靜態塊的訪問修飾符
- 17. 有條件訪問修飾符?
- 18. 這種訪問修飾符的方法的目的是什麼?
- 19. 更改GridView的CreateRow方法的訪問修飾符
- 20. 訪問說明符和訪問修飾符有什麼區別?
- 21. 更改訪問修飾符的解決方法
- 22. C#Main()方法的默認訪問修飾符
- 23. Java 9中接口方法的默認訪問修飾符?
- 24. 爲什麼Java限制隱藏方法的訪問修飾符
- 25. Java訪問修飾符 - 可用於子類和包的方法
- 26. 在C中使用元組的方法訪問修飾符#
- 27. 將訪問修飾符添加到使用Roslyn CodeFixProvider的方法?
- 28. Java訪問修飾符:無修飾符與「默認」
- 29. 訪問修飾符C# - 內部修飾符
- 30. 屬性訪問修飾符;爲什麼以下工作沒有?
在哪種語言? – 2010-05-26 23:14:46
@steve抱歉,已添加c#標記。 – 2010-05-26 23:17:07