private (Riferimenti per C#)private (C# Reference)

La parola chiave private è un modificatore di accesso ai membri.The private keyword is a member access modifier.

Questa pagina illustra l'accesso private.This page covers private access. La parola chiave private fa anche parte del modificatore di accesso private protected.The private keyword is also part of the private protected access modifier.

L'accesso privato è il livello di accesso più restrittivo.Private access is the least permissive access level. I membri privati sono accessibili solo all'interno del corpo della classe o dello struct in cui sono stati dichiarati, come nell'esempio seguente: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
}

Anche i tipi annidati dello stesso corpo possono accedere ai membri privati.Nested types in the same body can also access those private members.

Fare riferimento a un membro privato all'esterno della classe o dello struct in cui è stato dichiarato genera un errore in fase di compilazione.It is a compile-time error to reference a private member outside the class or the struct in which it is declared.

Per un confronto di private con altri modificatori di accesso, vedere Livelli di accessibilità e Modificatori di accesso.For a comparison of private with the other access modifiers, see Accessibility Levels and Access Modifiers.

EsempioExample

In questo esempio la classe Employee contiene due membri dati privati, name e salary.In this example, the Employee class contains two private data members, name and salary. Essendo privati, i membri risulteranno accessibili solo ai metodi di membro.As private members, they cannot be accessed except by member methods. I metodi pubblici GetName e Salary vengono aggiunti per consentire il controllo dell'accesso ai membri privati.Public methods named GetName and Salary are added to allow controlled access to the private members. È possibile accedere al membro name tramite un metodo pubblico e al membro salary tramite una proprietà pubblica di sola lettura.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. Per altre informazioni, vedere Proprietà.(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;
    }
}

Specifiche del linguaggio C#C# language specification

Per altre informazioni, vedere Accessibilità dichiarata in Specifica del linguaggio C#.For more information, see Declared accessibility in the C# Language Specification. La specifica del linguaggio costituisce il riferimento ufficiale principale per la sintassi e l'uso di C#.The language specification is the definitive source for C# syntax and usage.

Vedere ancheSee also