Il y a 3 façons différentes de mémoire allouée.
statique:
Ceux-ci sont liés et alloués au moment de la compilation. Variables statiques globales par exemple.
Stack dynamique:
Ceux-ci sont liés lors de l'exécution et poussé sur la pile. Telle une variable locale dans un appel de fonction.
Tas dynamique:
Maintenant dynamique tas a aussi quelques différentes catégories « sous », comme implicite et explicite, mais je ne vais pas entrer dans ce détail.
Lorsque vous déclarez
private MyClass item; // here?
une référence à MyClass est poussé sur la pile. Ce n'est qu'une référence et rien de plus. Sa valeur est nulle à ce moment-là.
public void MyMethod()
{
item = new MyClass(); // or here?
}
Il est à ce moment-là où la mémoire est explicitement attribué sur le tas en appelant « new MyClass() » et point alors des références il.
Donc, en réalité, vous avez 2 variables après avoir appelé MyMethod. Un élément de type refernce nommé, et une variable non nommée sur le segment de mémoire dont les références d'articles sont de type MyClass.
Très belle réponse, ajoute quelques petites choses laissées par Nicholas. Je vais voter, mais il obtient les points de réponse. Merci! –
Et il devrait; sa réponse était plus complète. :) Lui et moi avons répondu presque au même moment, au large d'une minute ou deux. :) –