C#のクラスメンバーのデフォルトアクセス修飾子は何?privateが基本
C#において、クラスメンバーにアクセス修飾子を明示的に指定しなかった場合、デフォルト(既定)のアクセスレベルは「private」になります。
なぜメンバー変数はprivateにするのか
メンバー変数(クラスメンバー)は、設計の観点から見るとオブジェクトの「属性」に相当します。これらをprivateとして外部から隠蔽することで、カプセル化(encapsulation)を実現できます。
カプセル化によって、オブジェクト内部のデータはクラス内のpublicなメソッド(メンバー関数)を経由してのみアクセス・操作できるようになります。その結果、不正な値の代入を防ぎ、クラス内部の実装を自由に変更できるなど、保守性と安全性の高いコードを書くことが可能になります。
サンプルコード
以下は、Rectangle(長方形)クラスでメンバー変数をprivateにし、publicメソッドを通じてアクセスする例です。
using System;
namespace RectangleApplication {
class Rectangle {
// メンバー変数
private double length;
private double width;
public void Acceptdetails() {
length = 10;
width = 14;
}
public double GetArea() {
return length * width;
}
public void Display() {
Console.WriteLine("Length: {0}", length);
Console.WriteLine("Width: {0}", width);
Console.WriteLine("Area: {0}", GetArea());
}
} // end class Rectangle
class ExecuteRectangle {
static void Main(string[] args) {
Rectangle r = new Rectangle();
r.Acceptdetails();
r.Display();
Console.ReadLine();
}
}
}
出力結果
Length: 10 Width: 14 Area: 140
補足:C#の主なアクセス修飾子
C#には以下のようなアクセス修飾子があり、目的に応じて使い分けます。
- private:同じクラス内からのみアクセス可能(クラスメンバーのデフォルト)
- public:どこからでもアクセス可能
- protected:同じクラスおよび派生クラスからアクセス可能
- internal:同じアセンブリ内からアクセス可能(トップレベルのクラスのデフォルト)
- protected internal:同一アセンブリ内、または派生クラスからアクセス可能
このように、クラスメンバーのデフォルトはprivateであるため、明示的な指定がない場合は外部から直接アクセスできない点に注意しましょう。
-
C#におけるクラスのデフォルトアクセス修飾子とは?internalの基本を解説
C#では、クラスやメンバにアクセス修飾子を明示的に指定しなかった場合、デフォルトのアクセスレベルはinternal(内部)になります。internalアクセス指定子が付いたクラスやメンバは、同じアセンブリ(同一プロジェクト・同一EXE/DLL)内にある他のクラスやメソッドから自由にアクセスできます。ただし、アセンブリの外部からは参照できないため、ライブラリ内部でのみ使用する型やメンバを定義したい場合に適しています。言い換えると、internalメンバは「そのメンバが定義されているアプリケーション(アセンブリ)内であれば、どのクラス・どのメソッドからでもアクセス可能」ということになります。int
-
C#のクラスにおけるメンバー変数とは?意味と使い方を徹底解説
C#におけるクラスとメンバー変数の基本C#において、クラスはメンバー変数(フィールド)とメソッド(関数)を含む「設計図」であり、そこから生成されるオブジェクトの状態や振る舞いを定義するものです。まずはクラスの基本構文を確認し、メンバー変数がどのように宣言されるのかを見ていきましょう。クラスの基本構文<アクセス修飾子> class クラス名 { // メンバー変数 <アクセス修飾子> <データ型> 変数1; <アクセス