private (C# リファレンス)

private キーワードはメンバー アクセス修飾子です。

このページでは、private アクセスについて説明します。 private キーワードも private protected アクセス修飾子に含まれます。

プライベート アクセスは、最も制限の多いアクセス レベルです。 次の例に示すように、プライベート メンバーは、宣言されているクラスまたは構造体の本体内でのみアクセスできます。

class Employee
{
    private int _i;
    double _d;   // private access by default
}

同じ本体にある入れ子にされた型も、プライベート メンバーにアクセスできます。

プライベート メンバーへの参照を、クラスの外側やメンバーが宣言されているクラスの外側から行った場合は、コンパイル時のエラーが発生します。

private とその他のアクセス修飾子の比較については、「アクセシビリティ レベル」と「アクセス修飾子」を参照してください。

この例では、Employee クラスに _name_salary という 2 つのプライベート データ メンバーが含まれています。 これらのメンバーは、プライベート メンバーであり、メンバー メソッド以外からはアクセスできません。 GetNameSalary というパブリック メソッドが追加されており、プライベート メンバーへの制御されたアクセスが許可されています。 _name メンバーはパブリック メソッドを通してアクセスされ、_salary メンバーはパブリックな読み取り専用プロパティを通してアクセスされます 詳細については、「 プロパティで定義されているインターフェイスのプライベート C++ 固有の実装です。

class Employee2
{
    private readonly string _name = "FirstName, LastName";
    private readonly double _salary = 100.0;

    public string GetName()
    {
        return _name;
    }

    public double Salary
    {
        get { return _salary; }
    }
}

class PrivateTest
{
    static void Main()
    {
        var e = new Employee2();

        // The data members are inaccessible (private), so
        // they can't be accessed like this:
        //    string n = e._name;
        //    double s = e._salary;

        // '_name' is indirectly accessed via method:
        string n = e.GetName();

        // '_salary' is indirectly accessed via property
        double s = e.Salary;
    }
}

C# 言語仕様

詳細については、「C# 言語仕様」の宣言されたアクセシビリティに関するセクションを参照してください。 言語仕様は、C# の構文と使用法に関する信頼性のある情報源です。

関連項目