Qual è la differenza tra una variabile membro e una variabile locale?Qual è la differenza tra una variabile membro e una variabile locale?
Sono uguali?
Qual è la differenza tra una variabile membro e una variabile locale?Qual è la differenza tra una variabile membro e una variabile locale?
Sono uguali?
Una variabile membro è un membro di un tipo e appartiene allo stato di quel tipo. Una variabile locale non è un membro di un tipo e rappresenta la memoria locale piuttosto che lo stato di un'istanza di un determinato tipo.
Questo è tutto molto astratto, tuttavia. Ecco un esempio 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;
}
dovresti menzionare qualcosa sullo stack anche –
Lo stack è un dettaglio di implementazione. Sì, molte lingue memorizzano le variabili locali su uno stack di chiamate ma ciò non ha alcuna influenza su cosa sia una variabile locale _is_ per definizione. Ho incluso solo un esempio di codice per aiutare a fondere i concetti astratti di cui stavo parlando. –
Mi piace chiamare i "campi" delle variabili membro solo per ridurre l'uso della parola "variabile". :) – mcjabberz
Una variabile membro appartiene a un oggetto ... qualcosa che ha uno stato. Una variabile locale appartiene solo alla tabella dei simboli di qualsiasi ambito tu sia. Tuttavia, saranno rappresentati in memoria più o meno come se il computer non avesse alcuna nozione di una classe ... vede solo bit che rappresentano istruzioni. Le variabili locali e le variabili membro possono essere nello stack o nell'heap.
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
}
}
Esistono due tipi di variabile membro: istanza e statica.
Una variabile di istanza dura fino a quando l'istanza della classe. Ce ne sarà una copia per istanza.
Una variabile statica dura quanto la classe. Ne esiste una copia per l'intera classe.
Una variabile locale viene dichiarata in un metodo e dura solo fino a quando il metodo ritorna:
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
Una variabile locale è la variabile si dichiara in una vita function.Its è solo su quella funzione.
Una variabile membro è la variabile dichiarata in una definizione di classe. La durata è solo all'interno di quella classe. È una variabile globale. Può essere accessibile da qualsiasi funzione all'interno della stessa classe.
Tieni presente che dal momento che hai programmato solo la programmazione, riceverai risposte in varie lingue. –