[解決済み] C#では、public、private、protected、アクセス修飾子がないことの違いは何ですか?
質問
大学時代からずっと
public
との違いを教えてください。
public
,
private
および
protected
?
また
static
は、何もない場合と比較して、どうでしょうか?
どのように解決するのか?
アクセス修飾子
から docs.microsoft.com :
<ブロッククオート型またはメンバは、同じアセンブリまたはそれを参照する別のアセンブリ内の他のコードからアクセスすることができます。
型またはメンバは、同じクラスまたは構造体のコードからのみアクセス可能です。
型またはメンバは、同じクラスまたは構造体、あるいは派生クラス内のコードからのみアクセスできます。
private protected
(C# 7.2 で追加)
この型またはメンバは、同じクラスまたは構造体、または同じアセンブリからの派生クラス内のコードからのみアクセス可能で、別のアセンブリからはアクセスできません。
この型またはメンバは、同じアセンブリ内のどのコードからもアクセスできますが、別のアセンブリからはアクセスできません。
この型またはメンバは、同じアセンブリ内の任意のコード、または別のアセンブリ内の任意の派生クラスからアクセスすることができます。
いつ アクセスモディファイアなし が設定されている場合、デフォルトのアクセス修飾子が使用されます。つまり、設定されていない場合でも、常に何らかのアクセス修飾子が存在することになります。
static
修飾子
クラスのstatic修飾子は、そのクラスがインスタンス化できず、すべてのメンバが静的であることを意味します。静的なメンバは、それを包含する型のインスタンスがいくつ作成されたかに関係なく、1つのバージョンを持ちます。
静的クラスは基本的に非静的クラスと同じですが、1つだけ違うのは、静的クラスは外部からインスタンス化できないことです。つまり、newキーワードでそのクラスの型の変数を作成することはできません。インスタンス変数がないため、静的クラスのメンバーにはクラス名そのものを使ってアクセスします。
ただし 静的コンストラクタ . 静的クラスを含め、どのようなクラスもこれらの1つを持つことができます。これらは直接呼び出すことはできませんし、パラメータを持つこともできません(クラス自身の型パラメータは除く)。静的コンストラクタは、最初のインスタンスが作成される前や、静的メンバが参照される前に自動的に呼び出され、クラスを初期化します。このようになります。
static class Foo()
{
static Foo()
{
Bar = "fubar";
}
public static string Bar { get; set; }
}
静的クラスはサービスとして使われることが多いので、こんな風に使うことができます。
MyStaticClass.ServiceMethod(...);
関連
-
[解決済み] C#のStringとstringの違いは何ですか?
-
[解決済み] Javaにおけるpublic、protected、package-private、privateの違いは何ですか?
-
[解決済み] C#で文字列のエンコーディングを手動で指定せずに、一貫性のあるバイト表現を得るには?
-
[解決済み] .NETでのdecimal, float, doubleの違い?
-
[解決済み] IDisposable インターフェースの正しい使用法
-
[解決済み] なぜList<T>を継承しないのですか?
-
[解決済み] C#のconstとreadonlyの違いは何ですか?
-
[解決済み] Static readonly」対「const」。
-
[解決済み] SelectとSelectManyの違い
-
[解決済み] .NET Coreと.NET Standard Class Libraryのプロジェクトタイプの違いは何ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】プログラム実行中に1秒待つ
-
[解決済み】トランスポート接続からデータを読み取れない:既存の接続は、リモートホストによって強制的に閉じられました。
-
[解決済み】「入力文字列が正しい形式ではありませんでした」エラーの解決方法は?[重複しています]。
-
[解決済み】WPFでXamlファイルにコメントを追加する方法は?
-
[解決済み】MetadataException: 指定されたメタデータ・リソースをロードできない
-
[解決済み】"指定されたパスのフォーマットはサポートされていません。"
-
[解決済み】値をNULLにすることはできません。パラメータ名:source
-
[解決済み】5.7.57 SMTP - MAIL FROMエラー時に匿名メールを送信するためにクライアントが認証されない
-
[解決済み】2つ(またはそれ以上)のリストを1つに統合する(C# .NETで
-
[解決済み】別のスレッドがこのオブジェクトを所有しているため、呼び出し側のスレッドはこのオブジェクトにアクセスできない