Compartilhar via


private (Referência de C#)

A palavra-chave private é um modificador de acesso de membro.

Este artigo aborda o private acesso. A private palavra-chave também faz parte do private protected modificador de acesso.

A linguagem C# faz referência a documentos da versão mais recentemente lançada da linguagem C#. Ele também contém a documentação inicial para funcionalidades em pré-visualizações públicas para o próximo lançamento do idioma.

A documentação identifica qualquer recurso introduzido pela primeira vez nas três últimas versões do idioma ou nas versões prévias públicas atuais.

Dica

Para descobrir quando um recurso foi introduzido pela primeira vez em C#, consulte o artigo sobre o histórico de versão da linguagem C#.

O acesso privado é o nível de acesso menos permissivo. Você pode acessar membros privados somente dentro do corpo da classe ou do struct em que os declara, conforme mostrado no exemplo a seguir:

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

Tipos aninhados no mesmo corpo também podem acessar esses membros privados.

Se você fizer referência a um membro privado fora da classe ou ao struct em que o declara, o compilador retornará um erro.

Para obter uma comparação entre os outros modificadores de private acesso, consulte Os Níveis de Acessibilidade e modificadores de acesso.

Neste exemplo, a Employee classe contém dois membros de dados privados _name e _salary. Como membros privados, os métodos de membro são a única maneira de acessá-los. O exemplo adiciona métodos públicos nomeados GetName e Salary para permitir o acesso controlado aos membros privados. O _name membro é acessado por meio de um método público e o _salary membro é acessado por meio de uma propriedade pública somente leitura. Para obter mais informações, consulte Properties.

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

Especificação da linguagem C#

Para obter mais informações, consulte A acessibilidade declarada na Especificação da Linguagem C#. A especificação de idioma é a fonte definitiva para a sintaxe e o uso de C#.

Consulte também