MEJOR SITIO PARA DESARROLLADORES WEB
Lenguaje C#. W3Schools lecciones en español

Ua En De

C# Modificadores de acceso


Modificadores de acceso

A estas alturas, ya está bastante familiarizado con la palabra clave public que aparece en muchos de nuestros ejemplos:

public string color;

La palabra clave public es un modificador de acceso, que se utiliza para establecer el nivel de acceso/visibilidad de clases, campos, métodos y propiedades.

C# tiene los siguientes modificadores de acceso:

Modificador Descripción
public El código es accesible para todas las clases
private Solo se puede acceder al código dentro de la misma clase
protected Se puede acceder al código dentro de la misma clase o en una clase heredada de esa clase. Aprenderá más sobre herencia en un capítulo posterior
internal Solo se puede acceder al código dentro de su propio ensamblado, pero no desde otro ensamblado. Aprenderá más sobre esto en un capítulo posterior

También hay dos combinaciones: protected internal y private protected.

Por ahora, centrémonos en los modificadores public y private.


Modificador privado

Si declaras un campo con un modificador de acceso private, solo se puede acceder a él dentro de la misma clase:

Ejemplo

class Car
{
  private string model = "Mustang";

  static void Main(string[] args)
  {
    Car myObj = new Car();
    Console.WriteLine(myObj.model);
  }
}

La salida será:

Mustang

Inténtalo tú mismo »

Si intentas acceder a él fuera de la clase, se producirá un error:

Ejemplo

class Car
{
  private string model = "Mustang";
}

class Program
{
  static void Main(string[] args)
  {
    Car myObj = new Car();
    Console.WriteLine(myObj.model);
  }
}

La salida será:

'Car.model' is inaccessible due to its protection level
The field 'Car.model' is assigned but its value is never used

Inténtalo tú mismo »


Modificador público

Si declaras un campo con un modificador de acceso public, es accesible para todas las clases:

Ejemplo

class Car
{
  public string model = "Mustang";
}

class Program
{
  static void Main(string[] args)
  {
    Car myObj = new Car();
    Console.WriteLine(myObj.model);
  }
}

La salida será:

Mustang

Inténtalo tú mismo »


¿Por qué modificar el acceso?

Para controlar la visibilidad de los miembros de la clase (el nivel de seguridad de cada clase individual y miembro de la clase).

Para lograr la "Encapsulación", que es el proceso de garantizar que los datos "sensibles" estén ocultos a los usuarios. Esto se hace declarando los campos como private. Aprenderá más sobre esto en el próximo capítulo.

Nota: De forma predeterminada, todos los miembros de una clase son private si no especifica un modificador de acceso:

Ejemplo

class Car
{
  string model;  // private
  string year;   // private
}