アクセス修飾子
アクセス修飾子(access modifiers)は、メンバーまたは型の宣言されたアクセシビリティ(accessibility;利用しやすさ;参照可能範囲)を指定するために使用されるキーワードです。
宣言したクラス、プロパティ、メソッド等がどの範囲から参照できるかを定義します。
アクセシビリティレベル
アクセシビリティレベル(accessibility levels)は、アクセス修飾子毎のアクセシビリティの段階のことです。
アクセシビリティ一覧
アクセシビリティの宣言 | 説明 |
---|---|
public | アクセスの制限はありません。 |
protected | アクセスは、コンテナー クラス、またはコンテナー クラスから派生した型に制限されます。 |
internal | アクセスは現在のアセンブリに制限されます。 |
protected internal | 現在のアセンブリへのアクセスは、コンテナー クラス、またはコンテナー クラスから派生した型に制限されます。 |
private | アクセスはコンテナー型に制限されます。 |
コンテナ別アクセシビリティ
メンバーが宣言されているコンテキストによっては、決まったアクセシビリティしか宣言できない場合があります。
メンバーの宣言にアクセス修飾子が指定されていない場合は、既定のアクセシビリティが使用されます。
入れ子にされた型 (他の型のメンバーになっている型) には、次の表に示したアクセシビリティを宣言することができます。
尚、名前空間には、アクセス制限がありません。
コンテナ | 既定のアクセシビリティ | 宣言できるアクセシビリティ |
---|---|---|
enum | public | なし |
class | private | public |
protected | ||
internal | ||
private | ||
protected internal | ||
internal | public | なし |
class | private | public |
internal | ||
private |
アクセシビリティの宣言の例
// Accessibility program in C#.
using System;
namespace EFnote
{
public class Employee
{
// 従業員コード
// setへのアクセスはコンテナー型に制限されます。
public int Code { get; private set; }
// 従業員名
public string Name { get; set; }
// 評価
// アクセスは、コンテナー クラス、またはコンテナー クラスから派生した型に制限されます。
protected double Evaluation { get; set; }
// 生年月日
public DateTime Birthday { get; set; }
}
}