En C#, ¿cuál es la diferencia entre public, private, protected y sin modificador de acceso?

Durante todos mis años de universidad he utilizado public, y me gustaría saber la diferencia entre public, private y protected.

Además, ¿qué hace static a diferencia de no tener nada?

Hmm.

Ver aquí: Modificadores de acceso.

En pocas palabras:

Public da al método o tipo una visibilidad completa desde otros tipos/clases.

Private permite que sólo el tipo que contiene el método/variable privado tenga acceso al método/variable privado (tenga en cuenta que las clases anidadas también tienen acceso a los métodos/variables privados de las clases que las contienen).

Protected es similar a private, excepto que las clases derivadas también pueden acceder a los métodos protegidos.

"Nothing" es el equivalente de VB.NET a null. Aunque si te refieres a que "nada" significa "sin modificador de acceso", entonces depende, aunque una regla general (ciertamente en C#) es que si no se especifica explícitamente un modificador de acceso, la declaración del método/variable suele estar tan restringida como puede estarlo. Por ejemplo

public class MyClass
{
    string s = "";
}

es efectivamente lo mismo que:

public class MyClass
{
    private string s = "";
}

El artículo de MSDN vinculado ofrecerá una descripción completa cuando no se especifique explícitamente un modificador de acceso.

Comentarios (0)

mmm...

Estático significa que puedes acceder a esa función sin tener una instancia de la clase.

Puedes acceder directamente desde la definición de la clase.

Comentarios (0)

Estos modificadores de acceso especifican dónde son visibles sus miembros. Probablemente deberías leer esto. Tome el enlace dado por IainMH como punto de partida.

Los miembros estáticos son uno por clase y no uno por instancia.

Comentarios (0)