2010-04-16 19 views

Respuesta

23

No, es variable local. Las variables locales se comportan de la misma manera ya sea que estén declaradas en métodos estáticos o métodos de instancia.

Como guía muy áspera (variables capturados etc introducen complicaciones):

  • variables de instancia: una variable por ejemplo
  • variables estáticas: una variable para el tipo en sí
  • Las variables locales (incluyendo los parámetros): una variable separada para cada método call
+4

esta respuesta ya ha sido aceptada. Simplemente no ha hecho clic todavía :-D –

10

Es un hecho bien conocido que un método estático solo puede funcionar en miembros estáticos

Esto no es un hecho; esto es una falsedad No hay restricción alguna; métodos estáticos tienen acceso completo a todos los miembros de su tipo:

class C 
{ 
    private int x; 
    static C Factory() 
    { 
     C c = new C(); 
     c.x = 123; 
    } 
} 

fábrica es un método estático; tiene acceso a los miembros de la instancia privada de cualquier instancia de C.

+0

@Eric: Como lo mencionó Jon, esta es una variable local y solo tendrá alcance en el método C. Así que sigo creyendo que 'el método estático solo puede funcionar en miembros estáticos'. Qué dices. –

+0

@vaibhav: Doy un ejemplo legal de un método estático que funciona en miembros no estáticos. Por lo tanto, no puede ser cierto que un método estático solo funcione en miembros estáticos. –

+0

@vaibhav: Quizás sería útil aclarar completamente el punto de Eric: 'x' es un miembro de instancia del tipo' C', y sin embargo este miembro de instancia se usa legalmente en el método estático 'Factory'. El hecho de que 'c' es un local es irrelevante en este punto (podría haberse pasado fácilmente al método como argumento, por ejemplo); lo importante es que es perfectamente válido usar el miembro 'x' aunque no sea un miembro estático. No puede usar un miembro de instancia sin proporcionar una instancia, por supuesto, si eso es lo que realmente quiere decir con su objeción. – kvb

Cuestiones relacionadas