c# とは default - public、private、protected、およびアクセス修飾子を持たない点の違いは何ですか?





7 Answers

Public - クラスが見える場合は、メソッドを見ることができます

プライベート - あなたがクラスの一員であれば、そうでなければメソッドを見ることができます。

Protected - Privateと同じですが、すべての子孫もメソッドを見ることができます。

静的(クラス) - "クラス"と "オブジェクト"の区別を覚えていますか? すべてを忘れて。 彼らは "静的"と同じです...クラスはそれ自身の1つの唯一のインスタンスです。

静的(メソッド) - このメソッドを使用すると、そのメソッドの一部であるクラスの実際のインスタンスとは独立した参照フレームを持ちます。

namespace

私の大学時代、私はpublicされてきました。 publicprivateprotected違いを知りたいですか?

また、 staticは何も持たないのに対して何をするのですか?




Nothingの問題について

  • 名前空間の型はデフォルトで内部的です
  • ネストされた型を含むすべての型メンバーは、デフォルトではプライベートです



うーん。

参照: アクセス修飾子

手短に:

publicは、メソッドまたはタイプに、他のタイプ/クラスからの完全な可視性を与えます。

Privateは、プライベートメソッド/変数へのプライベートメソッド/変数アクセスを含む型だけを許可します(ネストされたクラスは、クラスを含むプライベートメソッド/変数にアクセスできます)。

Protectedは、派生クラスが保護されたメソッドにもアクセスできることを除けば、privateと似ています。

"Nothing"はVB.NETのnullと同じです。 あなたが明示的にアクセス修飾子を指定していない場合、メソッド/変数(つまり、アクセス修飾子)が明示的に指定されていない場合、宣言は通常それができる限り制限されています。 すなわち、

public class MyClass
{
    string s = "";
}

効果的に同じです:

public class MyClass
{
    private string s = "";
}

リンクされたMSDNの記事は、アクセス修飾子が明示的に指定されていない場合の完全な説明を提供します。




この答えからすばらしい図を再掲載する。

Vennダイアグラムのすべてのアクセス修飾子は、より限定的なものからより乱雑なものまでです。

private

private protected : - C#7.2で追加

internal

protected

protected internal

public




ステータスが「プライベート」の場合、変数には同じクラスのオブジェクトのみがアクセスできます。 保護されたステータスは、そのアクセスをクラスの子孫も含むように拡張します。

"上の表から私たちは私的なものと保護されたものとの間の差異を見ることができます...両者は同じだと思っています....だから、

詳細についてはMSDNリンクを確認してください




クラスのアクセシビリティを注意深く監視します。 公開クラスと保護されたクラスとメソッドは、デフォルトですべての人がアクセスできます。

また、Microsoftは、Visual Studioの新しいクラスが作成されたときに、アクセス修飾子(public、protectedなど)を表示することはあまりありません。 だから、あなたのクラスのアクセシビリティについて考えてみてください。なぜなら、それはあなたのインプリメンテーション内部への扉だからです。




C#には合計6つのアクセス修飾子があります。

プライベート :このアクセシビリティで宣言されたメンバーは、包含タイプ内で可視であり、派生タイプ、同じアセンブリ内の他のタイプ、または包含アセンブリ外のタイプでは見えません。 つまり、アクセスは包含するタイプに限定されます。

protected :このアクセス可能性で宣言されたメンバーは、包含アセンブリ内の包含型から派生した型と、包含アセンブリ外の包含型から派生した型内で可視になります。 すなわち、アクセスは、包含する型の派生型に限定されます。

internal :このアクセシビリティで宣言されたメンバは、このメンバを含むアセンブリ内で表示できますが、格納アセンブリ外のアセンブリでは表示されません。 すなわち、アクセスはアセンブリのみを含むことに限定される。

internal protected :このアクセシビリティで宣言されたメンバーは、包含アセンブリの内部または外部の包含型から派生した型内で可視であり、包含アセンブリ内のどの型でも可視です。 つまり、アクセスはアセンブリまたは派生型を含むことに限定されます。

パブリック :このアクセシビリティで宣言されたメンバーは、このメンバーを含むアセンブリ、または含まれているアセンブリを参照する他のアセンブリで表示できます。 すなわち、アクセスは限定されない。

C#7.2では、新しいレベルのアクセシビリティが追加されています。

private protected :このアクセシビリティで宣言されたメンバーは、包含アセンブリ内のこの型を含む型から派生した型の中で見ることができます。 包含型から派生したものではない型、または包含アセンブリの外部では見えません。 すなわち、アクセスは包含アセンブリ内の派生型に限定される。

新しいプライベート保護アクセス修飾子のサンプルコードを含むソース




Related