MochiuWiki : SUSE, EC, PCB
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
ツール
リンク元
関連ページの更新状況
特別ページ
ページ情報
We ask for
Donations
検索
個人用ツール
ログイン
Toggle dark mode
名前空間
ページ
議論
表示
閲覧
ソースを閲覧
履歴を表示
C Sharpの基礎 - アクセス修飾子のソースを表示
提供: MochiuWiki : SUSE, EC, PCB
←
C Sharpの基礎 - アクセス修飾子
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
この操作は、次のグループのいずれかに属する利用者のみが実行できます:
管理者
、new-group。
このページのソースの閲覧やコピーができます。
== 概要 == オブジェクト指向の言語を構成する要素にクラスがある。<br> クラスのメンバ変数やメソッドには、アクセシビリティというものが存在する。<br> これは、どこからアクセスできるかという制限の度合いを表し、その1つにinternal修飾子がある。<br> <br> ここでは、internal修飾子について記載する。<br> <br><br> == アクセス修飾子とは == C#には様々なアクセス修飾子が存在する。<br> まず、どのような修飾子があるのか確認する。<br> <br> 以下、アセンブリという用語が出てくるが、アセンブリとは実行可能ファイル(EXE)またはライブラリ(DLL)のことを指す。<br> C#では、1つのプロジェクトで1つのアセンブリが作成される。<br> <br> ==== public ==== 他のプロジェクトからでもアクセスできる修飾子である。<br> どこからでもアクセスできる反面、プログラムを修正する際には、どこまで影響範囲があるのかの確認が必要となる。<br> <br> サードパーティ製のDLLを組み込む場合、実行段階にならないとエラー箇所が判明しない等、安易に使用するのは推奨されない。<br> <br> ==== internal ==== 同一アセンブリ内のクラスからのみアクセス可能な修飾子である。<br> 他のプロジェクトからはアクセス不可となる。<br> <br> publicと違い修正範囲が限定されているため、同じアセンブリ内でのみ使用する場合は、こちらを使用する方がよい。<br> <br> ==== protected ==== クラス内部と派生クラスの内部のみアクセス可能な修飾子である。<br> 基底クラスだけで使用する場合はprivate、派生クラスも使用する場合はprotectedを実装する。<br> <br> 異なるアセンブリであっても、継承関係にあればprotectedの参照は可能である。<br> <br> ==== private ==== クラス内部のみアクセス可能な修飾子である。<br> 外部から参照されることがなく、他のクラスの影響を受けない分、最も制限が厳しい修飾子である。<br> <br> クラスの定義は名前空間の直下やファイルの直下に記述できるが、この時に指定できるアクセス修飾子はpublicとinternalの2種類のみである。<br> <br> また、メソッド等のアクセス修飾子を明示的に指定しない場合、自動的にprivateになるので注意すること。<br> <br><br> == internalの実装方法 == 以下の例では、internalの実装方法を記述している。<br> <source lang="csharp"> // internalの実装方法 1 // Sample1.cs using System; using System.Windows.Forms; namespace WindowsFormsApp { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { ClassSample clsSample = new ClassSample(); clsSample.GetName(); } } } // Sample2.cs using System; namespace WindowsFormsApp { internal class ClassSample { internal void GetName() { Console.WriteLine("internal"); } } } </source> <br> # 出力 internal <br><br> == protected internalの実装方法 == 以下の例では、protected internalの実装方法を記述している。<br> <source lang="csharp"> // internalの実装方法 2 // Sample1.cs using System; using System.Windows.Forms; namespace WindowsFormsApp { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { ClassSample clsSample = new ClassSample(); clsSample.GetName(); } } } // Sample2.cs using System; namespace WindowsFormsApp { internal class ClassSample { internal protected void GetName() { Console.WriteLine("internal protected"); } } } </source> <br> # 出力 internal protected <br><br> == その他 == internalクラス内のメソッドにおいて、publicメソッドまたはinternalメソッドのいずれかを選択する時、publicメソッドで宣言した方がよい。<br> <br> 主な理由として、異なるアセンブリに公開する場合、クラスをpublicに変更すればメソッドが公開されるからである。<br> もし、internalメソッドならば、全てのinternalメソッドをpublicメソッドに変更しなければならない。<br> <br> 絶対に外部に公開しないメソッドのみ、internalメソッドにすればよい。<br> <br><br> __FORCETOC__ [[カテゴリ:C_Sharp]]
C Sharpの基礎 - アクセス修飾子
に戻る。
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
ツール
リンク元
関連ページの更新状況
特別ページ
ページ情報
We ask for
Donations
Collapse