C#
 Computer >> コンピューター >  >> プログラミング >> C#

C#のクラスにおけるpublicメンバー変数のスコープとは?

publicアクセス修飾子を使用すると、クラスは自身のメンバー変数やメンバー関数を、他の関数やオブジェクトに対して公開することができます。publicとして宣言されたメンバーは、クラスの外部から自由にアクセス可能です。

以下の例では、lengthwidthという変数がpublicとして宣言されています。このため、Main()メソッドの外からでもこれらの変数へアクセスできるようになっています。

変数へのアクセスは、クラスのインスタンスを通じて行います。

Rectangle r = new Rectangle();
r.length = 4.5;
r.width = 3.5;

それでは、完全なコードを見てみましょう。

サンプルコード

using System;
namespace RectangleApplication {
    class Rectangle {
        // メンバー変数
        public double length;
        public double width;
        public double GetArea() {
            return length * width;
        }
        public void Display() {
            Console.WriteLine("Length: {0}", length);
            Console.WriteLine("Width: {0}", width);
            Console.WriteLine("Area: {0}", GetArea());
        }
    } // Rectangleクラスの終わり
    class ExecuteRectangle {
        static void Main(string[] args) {
            Rectangle r = new Rectangle();
            r.length = 4.5;
            r.width = 3.5;
            r.Display();
            Console.ReadLine();
        }
    }
}

実行結果

Length: 4.5
Width: 3.5
Area: 15.75

解説のポイント

このコードでは、Rectangleクラス内で宣言されたpublicメンバー変数lengthwidthに、別クラスExecuteRectangleMain()メソッドから直接値を代入しています。これは両者が同じ名前空間内にあり、かつメンバーがpublicであるため可能になっています。

もし変数がprivateで宣言されていた場合、クラス外部からのアクセスはコンパイルエラーとなり、アクセスできるのはクラス内部のメンバーだけに限定されます。

補足:カプセル化の観点から

publicメンバー変数は手軽ですが、実際の開発ではフィールドをprivateにし、プロパティ(get / setアクセサー)経由でアクセスする「カプセル化」が推奨されます。プロパティを使うことで、不正な値の代入を防ぐバリデーション処理を追加したり、内部実装を変更せずにインターフェースを維持したりできるようになります。

  1. C#のArrayListクラスとは?主なメソッド一覧とSort()による並べ替え方法を解説

    ArrayListクラスは、個別にインデックスでアクセスできるオブジェクトの順序付きコレクションを表します。基本的には配列(Array)の代替として利用できる便利なコレクションです。要素数が事前にわからない場合でも動的にサイズが拡張されるため、柔軟なデータ管理が可能になります。ArrayListクラスの主なメソッドArrayListクラスには、要素の追加・削除・検索・並べ替えなどを行うための多彩なメソッドが用意されています。以下に主要なメソッドとその説明をまとめました。番号メソッドと説明1public virtual int Add(object value);ArrayListの末尾にオブジ

  2. C#のクラスにおけるメンバー変数とは?意味と使い方を徹底解説

    C#におけるクラスとメンバー変数の基本C#において、クラスはメンバー変数(フィールド)とメソッド(関数)を含む「設計図」であり、そこから生成されるオブジェクトの状態や振る舞いを定義するものです。まずはクラスの基本構文を確認し、メンバー変数がどのように宣言されるのかを見ていきましょう。クラスの基本構文<アクセス修飾子> class クラス名 {    // メンバー変数    <アクセス修飾子> <データ型> 変数1;    <アクセス