Compartir a través de


private (Referencia de C#)

La palabra clave private es un modificador de acceso de miembro.

Esta página trata sobre el modificador de acceso private. La palabra clave private también forma parte del modificador de acceso private protected.

El acceso privado es el nivel de acceso menos permisivo. Los miembros privados solo son accesibles dentro del cuerpo de la clase o el struct en el que se declaran, como en este ejemplo:

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

Los tipos anidados en el mismo cuerpo también pueden tener acceso a los miembros privados.

Hacer referencia a un miembro privado fuera de la clase o el struct en el que se declara es un error en tiempo de compilación.

Para obtener una comparación de private con los demás modificadores de acceso, vea Niveles de accesibilidad y Modificadores de acceso.

Ejemplo

En este ejemplo, la clase Employee contiene dos miembros de datos privados, _name y _salary. Como miembros privados, solo pueden tener acceso a ellos los métodos de miembro. Los métodos públicos denominados GetName y Salary se agregan para permitir un acceso controlado a los miembros privados. Se tiene acceso al miembro _name a través de un método público, mientras que se tiene acceso al miembro _salary a través de una propiedad pública de solo lectura. Para obtener más información, consulta Propiedades.

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

Especificación del lenguaje C#

Para obtener más información, vea la sección Accesibilidad declarada de la Especificación del lenguaje C#. La especificación del lenguaje es la fuente definitiva de la sintaxis y el uso de C#.

Vea también