C# アクセス修飾子
アクセス修飾子
ここまでで、多くの例に登場するpublicキーワードについてはよくご存じでしょう。
{.language-csharp .techis-white}
<strong>public</strong>
string color;publicキーワードはアクセス修飾子で、クラス、フィールド、メソッド、およびプロパティのアクセスレベル/可視性を設定するために使用されます。
C#には、次のアクセス修飾子があります。
| 修飾子 | 説明 |
|---|---|
public |
コードはすべてのクラスでアクセス可能です |
private |
コードは同じクラス内でのみアクセス可能です |
protected |
コードは、同じクラス内またはクラス内でアクセス可能です。 そのクラスから継承されます。詳しくはこちらの継承の章を参照して下さい。 |
internal |
コードは、それ自体のアセンブリ内でのみアクセスできますが、別のアセンブリからはアクセスできません。 これについては、後の章で詳しく説明します |
次の2つの組み合わせもあります。protected internalとprivate protected。
今のところ、publicとprivate修飾子に焦点を当てましょう。
プライベート修飾子
privateアクセス修飾子でフィールドを宣言すると、同じクラス内でのみアクセスできます。
クラスの外にアクセスしようとすると、エラーが発生します。
例
{.language-csharp .techis-white .techis-border-red}
class Car
{
private string model = "Mustang";
}
class Program
{
static void Main(string[] args)
{
Car myObj = new Car();
Console.WriteLine(myObj.model);
}
}
出力は次のようになります。
'Car.model' is inaccessible due to its protection level
The field 'Car.model' is assigned but its value is never used
公開修飾子
publicアクセス修飾子でフィールドを宣言すると、すべてのクラスからアクセスできます。
例
{.language-csharp .techis-white}
class Car
{
public string model = "Mustang";
}
class Program
{
static void Main(string[] args)
{
Car myObj = new Car();
Console.WriteLine(myObj.model);
}
}
出力は次のようになります。
Mustangこれは、「機密」データがユーザーから確実に隠されるプロセスです。これは、フィールドをプライベートとして宣言することによって行われます。
アクセス修飾子を使用する理由
クラスメンバーの可視性(個々のクラスおよびクラスメンバーのセキュリティレベル)を制御します。
"カプセル化"を実現するために - これは、「機密」データがユーザーから隠されていることを確認するプロセスです。これは、フィールドをprivateとして宣言することによって行われます。これについては、次の章で詳しく説明します。
注:アクセス修飾子を指定しない場合、デフォルトではクラスのすべてのメンバーはprivateになります。
例
{.language-csharp .techis-white}
class Car
{
string model; // private
string year; // private
}