次の方法で共有


private (C# リファレンス)

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

この記事では、 private アクセスについて説明します。 private キーワードは、private protected アクセス修飾子の一部でもあります。

C# 言語リファレンスには、C# 言語の最新リリース バージョンが記載されています。 また、今後の言語リリースのパブリック プレビューの機能に関する初期ドキュメントも含まれています。

このドキュメントでは、言語の最後の 3 つのバージョンまたは現在のパブリック プレビューで最初に導入された機能を特定します。

ヒント

C# で機能が初めて導入された時期を確認するには、 C# 言語バージョン履歴に関する記事を参照してください。

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

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# の構文と使用法の決定的なソースです。

こちらも参照ください