2012-05-23 23 views
8

veo que puedo escribir:¿Qué puedo hacer con una variable estática protegida/privada?

protected static 

en mi clase C# (en mi caso, un aspx.cs). Además de:

private static 

¿Qué significa? Static es accesible en todas partes. ¿Por qué protegido/privado?

+0

http://stackoverflow.com/questions/135020/advantages-to-using-private-static-methods – CraigTP

+0

¡Lo sé! Lo siento, vengo de Java. Ahí las cosas son un poco diferentes ... – markzzz

Respuesta

18

La definición de estática no está "disponible en todas partes". Es una variable compartida a través del tipo en el que se declara dentro del ámbito de un Dominio de aplicación.

Access Modifiers no altera esta definición, pero obviamente afecta el alcance de acceso.

Está confundiendo el modificador static con modificadores de acceso. Una variable estática aún necesita accesibilidad definida. En su ejemplo, las variables estáticas privadas solo son accesibles dentro del tipo en el que está definido, protegido podría ser accesible dentro del tipo y cualquier tipo derivado.

Solo una nota, tenga en cuenta que IIS (alojamiento de aplicaciones ASP.NET) recicla procesos de trabajo, lo que eliminará cualquier valor de variable estática que esté activo en ese momento.

0

static no significa que esté accesible en todas partes. Aún necesita protected/private para definir la visibilidad.

1

Un uso es que se pueden crear campos estáticos privados, y exponer el uso de métodos estáticos públicos/propiedades (aplicar un poco de lógica de negocios personalizada como Singleton, etc)

-1

Uso protegido si sólo se desea que la variable sea accesible a través de ciertas clases, por ejemplo cuando se usa polimorfismo y herencia. El público lo hace siempre visible dentro del alcance y lo privado es bastante obvio.

2

Si declara una variable como privada, no podrá acceder a ella fuera de la clase actual y, si se declara como protegida, solo la clase derivada podrá acceder a esa variable ... En su ejemplo, el significado básico de privado y protegido no está cambiando de modo que no importa cómo se declara un estático o simples ...

class Test 
{ 
    protected static int var1; 
    private static int var2; 
} 
class MainProgram : Test 
{ 
    private static int test; 
    static void Main(string[] args) 
    { 
     Test.var1 = 2; 
     Test.var2 = 5; //ERROR :: We are not able to access var2 because it is private     
    } 
} 

en el código anterior se puede ver si queremos que la variable estática es accesible sólo en la clase actual, entonces necesita hacerlo como Privado.

+3

Fuente: MSDN (varias páginas). Siempre amable para acreditar su fuente. – tomfanning

0

privada
El tipo o miembro sólo se puede acceder con el código de la misma clase o estructura.
protected
El tipo o miembro solo se puede acceder por código en la misma clase o estructura, o en una clase derivada. Modificador estático
Los métodos estáticos se llaman sin una referencia de instancia.

+0

métodos estáticos? Estoy hablando de variables, no de métodos ... – markzzz

+0

@markzzz No importa, la forma de acceder a ellos es la misma: una es simplemente una llamada a un método, la otra es acceso a campo/propiedad. –

Cuestiones relacionadas