this
Écrivez une classe Tin avec un champ int nommé size et un constructeur Tin(int size) qui pose this.size = size;. Dans Pine, gardez Main et construisez un tin avec Tin t = new Tin(7);, puis écrivez t.size. Gardez les deux types dans le même fichier d'enseignement pour que dotnet run reste simple. Lancez avec dotnet run. L'écran doit montrer une ligne : 7. Le paramètre et le champ partagent le nom size. Le mot this nomme le champ sur l'objet pour que le stockage aille au bon endroit. Utiliser this quand les noms se heurtent est ce que cette page enseigne. Gardez la classe publique de démarrage nommée Pine.
Pourquoi le même nom a besoin de this
Sur la page des constructeurs le paramètre était n et le champ était size, donc size = n; était clair. Ici les deux noms sont size. À l'intérieur du constructeur, un size nu signifie le paramètre. Écrire size = size; copie le paramètre sur lui-même et laisse le champ à sa valeur par défaut. Le champ sur l'objet a encore besoin d'une écriture. Cette écriture utilise this.size à gauche.
Ouvrez le fichier Pine. Le nom de la classe de démarrage reste Pine. Cette page ne renomme pas le démarreur. Supprimez tout reste Box b = new Box(4); si cet appel constructeurs est encore tout ce que vous avez dans Main. Supprimez tout reste de classe Box. Supprimez toute ligne ReadLine. Le fichier que vous gardez n'attend pas de frappe.
Hors des accolades de Pine — toujours dans le même fichier — écrivez public class Tin. À l'intérieur des accolades, déclarez int size;. Puis écrivez le constructeur : Tin(int size) { this.size = size; }. Il n'y a pas de Main dans Tin sur cette page. Enregistrez le fichier avant de lancer.
Relisez l'assignation une fois. Le côté droit size est la valeur arrivée dans le paramètre — ici 7. Le côté gauche this.size est le champ sur l'objet en cours de construction. Après l'exécution de la ligne, le size de cet objet contient 7. Si vous retirez this. et gardez size = size;, l'écran plus tard montre 0 parce que le champ n'a jamais changé.
using System;
public class Tin
{
int size;
Tin(int size)
{
this.size = size;
}
}
Pine construit un tin
Pine garde public static void Main(). À l'intérieur de Main, écrivez Tin t = new Tin(7); puis Console.WriteLine(t.size);. L'argument 7 devient le paramètre du constructeur size. Le constructeur le stocke avec this.size = size;. Vous n'avez pas besoin d'une ligne séparée t.size = 7; sur cette page. Vous n'écrivez pas Box b = new Box(4); sur cette page. C'était la leçon sur les constructeurs.
using System;
public class Pine
{
public static void Main()
{
Tin t = new Tin(7);
Console.WriteLine(t.size);
}
}
public class Tin
{
int size;
Tin(int size)
{
this.size = size;
}
}
Relisez le fichier conservé depuis le haut. using System; prépare les noms courts. public class Pine est le démarreur. public static void Main() est l'endroit où le runtime commence. L'expression new Tin(7) construit un Tin et appelle Tin(int size) avec le paramètre égal à 7. Le corps écrit this.size = size, donc le champ de l'objet devient 7. Puis Main écrit t.size et l'écran montre 7.
Lancez avec dotnet run. Le programme écrit une ligne et s'arrête. Il n'attend pas que vous tapiez. Si dotnet run attend, ReadLine est encore dans le fichier. Supprimez cette ligne et gardez new Tin(7) plus l'écriture dans Pine, avec this.size = size; dans Tin. L'écran montre 7. Si l'écran montre 4, un chemin restant new Box(4) tourne encore. Si l'écran montre 0, le corps du constructeur est probablement size = size; sans this. — remettez this. à gauche.
Si vous ajoutez void avant le nom du constructeur, cela devient une méthode ordinaire, pas un constructeur, et new Tin(7) n'exécutera pas ce corps comme cette page l'attend. L'en-tête doit ressembler à Tin(int size), pas void Tin(int size).
this.size et size côte à côte
Un court tableau garde les deux noms droits pendant que vous êtes à l'intérieur du constructeur.
📊 this.size vs size
| Name | What it means in Tin(int size) |
|---|---|
size alone |
the parameter that entered the constructor |
this.size |
the field on the object being built |
this.size = size; |
store the parameter into the field |
size = size; |
does not update the field |
Le tableau n'est qu'un rappel. La ligne tapée que vous gardez est this.size = size; à l'intérieur du constructeur, puis Tin t = new Tin(7); et Console.WriteLine(t.size); dans Pine. |
Comparé à la page des constructeurs
Sur la page des constructeurs, Box(int n) { size = n; } marchait parce que n et size étaient des mots différents. Cette forme marche encore. Cette page utilise délibérément le même mot deux fois pour que vous ayez besoin de this. Une démo Box restante avec size = n; est une autre leçon. Pour cette page gardez Tin et Pine et this.size = size;.
Écrire seulement Console.WriteLine(t); ne montre pas un 7 propre. Écrivez Console.WriteLine(t.size); pour voir le nombre stocké. La référence d'objet seule n'est pas la valeur du champ.
Vous pouvez encore choisir un autre nom de paramètre d'autres jours. Cette leçon choisit des noms assortis exprès. Ne mélangez pas n et this dans la même démo Tin sur cette page. Un chemin clair suffit : noms assortis, this sur le champ, écriture du champ.
Deux tins restent séparés
Chaque new Tin(...) exécute à nouveau le constructeur pour un objet séparé. Vous pouvez écrire Tin a = new Tin(2); et Tin b = new Tin(9);, puis écrire les deux champs size. Chaque appel utilise this.size = size; sur son propre objet. Les deux objets ne partagent pas un seul emplacement size. Vous n'avez pas besoin d'une seconde boîte de code pour ce contrôle — changez les nombres dans Pine une fois que vous avez déjà vu 7, ou gardez la démo à un seul tin comme fichier enregistré.
Si les deux lignes montrent 0, le constructeur manque encore this à gauche. Si la compilation ne trouve pas Tin en compilant Pine, vérifiez que public class Tin se trouve dans le même fichier.
Ce que cette page laisse aux méthodes d'instance
Cette page utilise this seulement à l'intérieur du constructeur pour stocker un champ. Une page plus tard — méthodes d'instance — montre des méthodes qui tournent sur un objet et peuvent lire ou changer des champs. Restez au stockage du constructeur ici. N'inventez pas de méthodes supplémentaires sur Tin pour cette leçon sauf si vous les connaissez déjà ; le but de la leçon est this.size = size quand les noms correspondent.
Ne nidez pas Tin à l'intérieur des accolades de Pine. Sur cette page les deux classes siègent comme sœurs dans le fichier. Si Pine a encore Box b = new Box(4); de la démo constructeurs et que ce fichier n'a pas de classe Box correspondante que vous voulez garder, retirez cette ligne. Gardez Tin t = new Tin(7); et Console.WriteLine(t.size);. La compilation n'inventera pas de Box pour vous quand vous enseignez Tin.
Vous pouvez déclarer int size;, écrire Tin(int size) { this.size = size; }, et construire avec Tin t = new Tin(7); depuis Pine.Main. Lancez avec dotnet run. L'écran montre 7. Le mot this nomme le champ de l'objet quand le paramètre porte le même nom. Vous avez passé le nombre à la construction, le constructeur l'a stocké avec this, et l'écriture a prouvé le stockage. Voyez this comme un pointeur vers l'objet en cours de construction quand un nom nu signifierait le paramètre à la place. Pine reste la porte que vous ouvrez avec dotnet run. La page suivante est les méthodes d'instance, où les méthodes sur l'objet utilisent les champs après que l'objet existe déjà.
Gardez l'en-tête du constructeur sans void. Gardez this. sur le champ. Gardez l'écriture sur t.size. Ces trois habitudes sont le point de contrôle de cette page avant de passer à la suite.
🧠 Testez Vos Connaissances
Testez Vos Connaissances
Mettez-vous au défi avec ce quiz interactif et voyez à quel point vous comprenez le sujet
📝 Instructions
- Lisez chaque question attentivement
- Sélectionnez la meilleure réponse pour chaque question
- Vous pouvez refaire le quiz autant de fois que vous le souhaitez
- Votre progression sera affichée en haut