2009-07-24 15 views

Respuesta

18

Una variable de miembro es un miembro de un tipo y pertenece al estado de ese tipo. Una variable local no es miembro de un tipo y representa el almacenamiento local en lugar del estado de una instancia de un tipo determinado.

Todo esto es muy abstracto, sin embargo. Aquí hay un ejemplo de C#:

class Program 
{ 
    static void Main() 
    { 
     // This is a local variable. Its lifespan 
     // is determined by lexical scope. 
     Foo foo; 
    } 
} 

class Foo 
{ 
    // This is a member variable - a new instance 
    // of this variable will be created for each 
    // new instance of Foo. The lifespan of this 
    // variable is equal to the lifespan of "this" 
    // instance of Foo. 
    int bar; 
} 
+2

, debe mencionar algo sobre la pila también –

+3

La pila es un detalle de implementación. Sí, muchos idiomas almacenan variables locales en una pila de llamadas, pero eso no tiene ninguna relación con lo que una variable local _es_ por definición. Solo incluí un ejemplo de código para ayudar a fundamentar los conceptos abstractos de los que estaba hablando. –

+2

Me gusta llamar a las variables miembro "campos" solo para reducir el uso de la palabra "variable". :) – mcjabberz

28

Una variable local es la variable que declara en una función.

Una variable de miembro es la variable que declara en una definición de clase.

+0

Eso es bastante fácil - gracias – Chin

+0

_ bienvenido :) – ufukgun

+0

¿Variable miembro == variable de clase? – utdev

0

Una variable miembro pertenece a un objeto ... algo que tiene estado. Una variable local solo pertenece a la tabla de símbolos de cualquier ámbito en el que se encuentre. Sin embargo, se representarán en la memoria de manera similar a como la computadora no tiene noción de una clase ... solo ve bits que representan instrucciones. Las variables locales y las variables miembro pueden estar tanto en la pila como en el montón.

1
public class Foo 
{ 
    private int _FooInt; // I am a member variable 


    public void Bar() 
    { 
     int barInt; // I am a local variable 
     //Bar() can see barInt and _FooInt 
    } 

    public void Baz() 
    { 
     //Baz() can only see _FooInt 
    } 
} 
5

Existen dos tipos de variables miembro: instancia y estática.

Una variable de instancia dura tanto como la instancia de la clase. Habrá una copia de ella por instancia.

Una variable estática dura tanto como la clase. Hay una copia para toda la clase.

Una variable local se declara en un método y sólo dura hasta que el método devuelve:

public class Example { 
    private int _instanceVariable = 1; 
    private static int _staticvariable = 2; 

    public void Method() { 
     int localVariable = 3; 
    } 
} 

// Somewhere else 

Example e = new Example(); 
// e._instanceVariable will be 1 
// e._staticVariable will be 2 
// localVariable does not exist 

e.Method(); // While executing, localVariable exists 
      // Afterwards, it's gone 
2

Una variable local es la variable se declara en una vida útil function.Its es sólo en esa función.

Una variable de miembro es la variable que declara en una definición de clase. Su vida útil está dentro de esa clase solamente. Es una variable global. Se puede acceder mediante cualquier función dentro de esa misma clase.

-1
  • Las variables declaradas dentro de un método son "variables locales"
  • variables declaradas dentro de la clase no dentro de cualquiera de los métodos son "variables miembro" (variables globales).
  • Las variables declaradas dentro de la clase que no están dentro de ningún método y se definen como estáticas son "variables de clase".
Cuestiones relacionadas