Dela via


privat (C#-referens)

Nyckelordet private är en medlemsåtkomstmodifierare.

Den här artikeln beskriver private åtkomst. Nyckelordet private är också en del av private protected åtkomstmodifieraren.

C#-språkreferensen dokumenterar den senaste versionen av C#-språket. Den innehåller även inledande dokumentation för funktioner i offentliga förhandsversioner för den kommande språkversionen.

Dokumentationen identifierar alla funktioner som först introducerades i de tre senaste versionerna av språket eller i aktuella offentliga förhandsversioner.

Tips/Råd

Information om när en funktion först introducerades i C# finns i artikeln om språkversionshistoriken för C#.

Privat åtkomst är den minst tillåtande åtkomstnivån. Du kan bara komma åt privata medlemmar i brödtexten i klassen eller den struct där du deklarerar dem, som du ser i följande exempel:

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

Kapslade typer i samma brödtext kan också komma åt dessa privata medlemmar.

Om du refererar till en privat medlem utanför klassen eller den struct där du deklarerar den returnerar kompilatorn ett fel.

En jämförelse av private med andra åtkomstmodifierare finns i Hjälpmedelsnivåer och Åtkomstmodifierare.

I det här exemplet Employee innehåller klassen två privata datamedlemmar och _name_salary. Som privata medlemmar är medlemsmetoder det enda sättet att komma åt dem. Exemplet lägger till offentliga metoder med namnet GetName och Salary för att tillåta kontrollerad åtkomst till de privata medlemmarna. Medlemmen _name nås via en offentlig metod och _salary medlemmen nås via en offentlig skrivskyddad egenskap. Mer information finns i Egenskaper.

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;
    }
}

Språkspecifikation för C#

Mer information finns i Deklarerad tillgänglighet i C#-språkspecifikationen. Språkspecifikationen är den slutgiltiga källan för C#-syntax och -användning.

Se även