Il y a deux concepts ici:
- Portée de la variable
- Référence mémoire
Avec la portée, tout est clair - la variable déclarée dans la classe est un membre de la classe et accessible de n'importe où dans la classe.
Maintenant, lorsque vous affectez une variable à une nouvelle instance d'un objet, cette variable contient une référence. Vous pouvez affecter de nouvelles instances autant de fois que vous le souhaitez. L'ancienne instance perdra la référence, donc, techniquement parlant, elle ne sera plus enracinée et sera disponible pour la récupération de place. Il existe des cas de variables en lecture seule (membres de la classe) qui ne peuvent être affectées qu'une seule fois.
Réponses supplémentaires:
Je pense que je suis vraiment confus entre une instance et un objet - instance = objet. En .net tout est un type. Tous les types dérivent du type "Object". Communément, tous les objets stockés dans la mémoire de tas appelés types de référence ou "objets". Les primitives stockées en pile appelées types-valeur.
1. L'objet est le TaskType - oui. TextBox également objet, à savoir - contrôle
2. J'ai créé une instance et passé la chaîne "nettoyer les toilettes" - oui. Instance- votre code chargé en mémoire.
3. La variable est newtask - oui
4. Je me suis alors attribué une nouvelle instance à la variable newtask - oui.
5. L'instance originale «nettoyer les toilettes» a-t-elle été recueillie par le ramasse-miettes? - pas immédiatement. Lorsque certaines conditions sont remplies pour l'exécution de garbage collector.
Ce sont les mêmes variables. Pourquoi ne seraient-ils pas? Vous n'avez déclaré qu'une seule variable (champ de membre de classe) –
Si vous avez déclaré 'TaskTypes.Task newTask' dans' Button1Click', vous obtiendrez une erreur de compilation. Mais vous l'avez déclaré au niveau de la classe afin qu'il soit disponible pour toute méthode ou événement non statique dans la classe. –
Autre chose à mentionner: si vous avez fait 'newTask'' readonly', vous ne pourrez pas le réassigner.Sauf, bien sûr, pour le constructeur de la classe. –