private (C# リファレンス)private (C# Reference)

private キーワードはメンバー アクセス修飾子です。The private keyword is a member access modifier.

このページでは、private アクセスについて説明します。This page covers private access. private キーワードも private protected アクセス修飾子に含まれます。The private keyword is also part of the private protected access modifier.

プライベート アクセスは、最も制限の多いアクセス レベルです。Private access is the least permissive access level. 次の例に示すように、プライベート メンバーは、宣言されているクラスまたは構造体の本体内でのみアクセスできます。Private members are accessible only within the body of the class or the struct in which they are declared, as in this example:

class Employee
{
    private int i;
    double d;   // private access by default
}

同じ本体にある入れ子にされた型も、プライベート メンバーにアクセスできます。Nested types in the same body can also access those private members.

プライベート メンバーへの参照を、クラスの外側やメンバーが宣言されているクラスの外側から行った場合は、コンパイル時のエラーが発生します。It is a compile-time error to reference a private member outside the class or the struct in which it is declared.

private とその他のアクセス修飾子の比較については、「アクセシビリティ レベル」と「アクセス修飾子」を参照してください。For a comparison of private with the other access modifiers, see Accessibility Levels and Access Modifiers.

Example

この例では、Employee クラスに namesalary という 2 つのプライベート データ メンバーが含まれています。In this example, the Employee class contains two private data members, name and salary. これらのメンバーは、プライベート メンバーであり、メンバー メソッド以外からはアクセスできません。As private members, they cannot be accessed except by member methods. GetNameSalary というパブリック メソッドが追加されており、プライベート メンバーへの制御されたアクセスが許可されています。Public methods named GetName and Salary are added to allow controlled access to the private members. name メンバーはパブリック メソッドを通してアクセスされ、salary メンバーはパブリックな読み取り専用プロパティを通してアクセスされますThe name member is accessed by way of a public method, and the salary member is accessed by way of a public read-only property. (詳細については、「プロパティ」を参照してください)。(See Properties for more information.)

class Employee2
{
    private string name = "FirstName, LastName";
    private 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# language specification

詳細については、「C# 言語仕様」の宣言されたアクセシビリティに関するセクションを参照してください。For more information, see Declared accessibility in the C# Language Specification. 言語仕様は、C# の構文と使用法に関する信頼性のある情報源です。The language specification is the definitive source for C# syntax and usage.

関連項目See also