今年の折り返し
ども!こんばんは!
クローバーフィールドの伊関です。
六月になりましたね。
もう今年が始まって半分でございます。
恐ろしいですね。
時間はあっという間に過ぎていくのです。
ならば今日という日も勉強でございます!
・フィールドの有効範囲
クラス内で宣言される変数を「フィールド」または「メンバー変数」と呼びます。
フィールドはメソッド{}の外で宣言されます。
WindowsFormApplication2のForm1.csの
private Button button1;
と、Form2.csの
internal string feeling;
はフィールドです。
構文 フィールド宣言
アクセス修飾子 データ型 フィールド名;
使用例
private double max;
アクセス修飾子には5つあります。
アクセス修飾子
アクセス修飾子 | 内容 |
public | クラスの外へ公開、制限なくアクセス可能。 |
private | 宣言したクラスの内部のみでアクセスが可能。 |
protected | 宣言したクラスとその派生クラスでは、アクセス可能。それ以外は不可。 |
internal | 現在のアセンブリのみアクセス可能。 |
protected internal | 現在のアセンブリ、または派生したクラスのみアクセス可能。 |
publicはクラスを越えて、どこからでもアクセス可能です。WindowsFormsApplication2でも、classの前に書かれたアクセス修飾子はpublicでしたね。
privateは宣言したクラス内部のどのメソッドからもアクセス可能ですが、外部のクラスからは、アクセスすることができません。もし、フィールドの宣言時にアクセス修飾子を省略すると、privateとして宣言されます。
protectedは、宣言したクラスとその派生クラスからアクセスが可能です。
internalは同一のプロジェクト内であれば、どのクラスからもアクセスが可能です。VisualC#では、コンパイルの単位を「アセンブリ」と呼びますが、要はプロジェクトのことです。publicでは公開範囲が大きすぎるため、internalアクセス修飾子が存在します。
WindowsFormsApplication2のForm2.csで宣言した「feeling」のアクセス修飾子は、internalでしたね。これはForm1クラスからもアクセスするためだったのです。同一プロジェクトから参照出来てればいいので、publicではなく、internalで宣言してます。
protected internalは、protected+internalの範囲からのアクセスが可能になります。つまり、同一アセンブリ内とアセンブリ外では派生クラスからアクセス可能です。
以上です!
では!