Portée
Écrivez une méthode nommée mark avec un paramètre : static void mark(int n). Entre les accolades écrivez ce paramètre avec Console.WriteLine(n);. Depuis Main appelez mark(4);. L'écran doit montrer une ligne : 4. Le nom n n'existe qu'à l'intérieur de mark. Si vous essayez d'écrire n depuis Main, la compilation refuse. Cette frontière — quels noms une méthode peut voir — est ce que cette page enseigne. Gardez la classe publique nommée Pine.
Des noms qui restent dans une méthode
Sur la page de surcharge, plusieurs méthodes paint partageaient un nom mais gardaient des listes de paramètres séparées. Ici le focus est plus petit : une méthode, un nom de paramètre, et l'endroit où ce nom a le droit d'apparaître. Un paramètre est un nom qui appartient à la méthode qui le déclare. Hors des accolades de cette méthode, le nom a disparu.
Ouvrez le fichier Pine. Le nom de classe reste Pine. Cette page ne renomme pas le type. Supprimez tout reste de démo paint si cette forme est encore tout ce que vous avez dans Main. Supprimez tout reste twice. Supprimez toute ligne ReadLine. Le fichier que vous gardez n'attend pas de frappe.
Hors de Main, toujours dans les accolades de la classe, écrivez static void mark(int n). Le corps a une seule ligne d'écriture : Console.WriteLine(n);. Gardez void sur cette page. Vous observez la visibilité, pas les valeurs de retour. Enregistrez le fichier avant d'exécuter. Le premier programme complet est dans la boîte suivante.
Le fichier que vous gardez
C'est la version que vous exécutez en premier. Main tient l'appel. mark tient la ligne d'écriture qui utilise n.
using System;
public class Pine
{
public static void Main()
{
mark(4);
}
static void mark(int n)
{
Console.WriteLine(n);
}
}
Lisez-le depuis le haut. using System; prépare les noms courts. public class Pine nomme le type. public static void Main() est l'endroit où l'exécution démarre. L'appel mark(4) envoie 4 dans le paramètre n. Dans mark, Console.WriteLine(n) écrit 4. Quand mark se termine, le nom n se termine aussi. Main n'a jamais tenu de nom n. Le nombre 4 a traversé l'appel comme valeur. Le nom n n'est pas entré dans Main. Une ligne à l'écran : 4.
Exécutez 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 mark(4); plus la méthode mark ci-dessus. L'écran montre 4. Si l'écran montre ok, un appel restant paint("ok") tourne encore. Si l'écran montre la lettre n, une ligne d'écriture a des guillemets : Console.WriteLine("n");. Vous ne réinstallez pas le SDK .NET pour un écran qui montre la mauvaise ligne.
Parcourez une exécution complète dans l'ordre. C# démarre à Main. L'appel mark(4) envoie 4 dans le paramètre n. Dans mark, WriteLine(n) écrit 4. Quand mark se termine, le nom n se termine aussi. Main n'a jamais tenu de nom n. Le nombre 4 a traversé l'appel comme valeur. Le nom n n'est pas entré dans Main.
Si vous ajoutez Console.WriteLine(n); dans Main après l'appel, la compilation signale qu'elle ne trouve pas le nom n. Cette erreur est la leçon en train de travailler : n n'a jamais été déclaré dans Main. Corrigez en retirant cette ligne de Main, ou en déclarant un autre nom dans Main si vous avez besoin d'un local là. N'attendez pas que le paramètre de mark apparaisse tout seul dans Main.
Un nom local à côté du paramètre
Dans mark vous pouvez aussi déclarer un nouveau nom qui n'est pas un paramètre. Ce nom local ne vit qu'entre les accolades de mark. Un espoir fréquent des débutants est qu'un nom déclaré dans Main soit automatiquement visible dans chaque méthode de la classe. Ce n'est pas le cas, sur cette forme. Si Main a int room = 4; et que mark essaie d'écrire room sans le recevoir, la compilation ne trouve pas room dans mark. La correction est de passer la valeur : mark(room); avec mark toujours déclaré comme mark(int n).
Passer un local de Main dans mark
Déclarez int room = 4; dans Main. Appelez mark(room);. Dans mark, continuez d'écrire n. L'écran montre encore 4. Le nom local dans Main est room. Le nom de paramètre dans mark est n. Ce sont des noms différents à des endroits différents. La valeur 4 est ce qui voyage.
using System;
public class Pine
{
public static void Main()
{
int room = 4;
mark(room);
}
static void mark(int n)
{
Console.WriteLine(n);
}
}
C'est le second fichier. Il enseigne la même visibilité avec un local dans Main. Exécutez dotnet run. Vous voyez encore une ligne : 4. Si vous changez room en 9 et laissez le corps de la méthode intact, l'écran montre 9. La méthode écrit toujours la valeur arrivée dans n. Main peut aussi écrire room si vous ajoutez Console.WriteLine(room); dans Main — ce nom lui appartient là. Main ne peut toujours pas écrire n. Après avoir vu la forme room, remettez le fichier à un seul appel si c'est la forme que vous voulez garder : mark(4); dans Main.
Si mark déclare son propre local — par exemple int tag = 1; entre les accolades — ce tag est invisible pour Main. Essayer Console.WriteLine(tag); dans Main échoue pour la même raison qu'écrire n depuis Main. Les accolades de mark sont un mur pour les noms déclarés à l'intérieur.
Ce que le mur protège
Lisez la séparation en mots simples. Les noms déclarés dans Main restent dans Main sauf si vous passez leurs valeurs dans un appel. Les noms déclarés dans mark — paramètres et locaux — restent dans mark. L'appel transporte des valeurs, pas les noms eux-mêmes. La surcharge de la page précédente est une autre compétence : plusieurs méthodes avec un nom de méthode partagé. La portée concerne l'endroit où un nom de variable ou de paramètre a le droit d'apparaître dans le source.
Une démo paint restante peut rester dans le même fichier et brouiller l'écran si Main appelle encore paint("ok"). Nettoyez Main jusqu'à l'appel mark que vous testez. Ne nidez pas mark dans les accolades de Main. Les méthodes se placent dans la classe, à côté de Main.
Écrire Console.WriteLine("n"); dans Main écrit la lettre n entre guillemets. Cela n'écrit pas le paramètre. Gardez Console.WriteLine(n) dans mark quand vous voulez la valeur arrivée par l'appel. Écrire mark(); avec des parenthèses vides échoue quand l'en-tête dit encore mark(int n) — l'appel doit envoyer un int, qu'il s'agisse d'un littéral comme 4 ou d'un local comme room.
Vous pouvez écrire mark(int n), écrire n dans cette méthode, et garder n hors de Main. Vous pouvez déclarer room dans Main et passer room dans mark. L'écran montre la valeur qui a traversé l'appel. Les noms ne fuient pas tout seuls à travers les accolades. La page suivante est recursion, où une méthode s'appelle elle-même avec un argument plus petit jusqu'à ce qu'une condition d'arrêt termine la chaîne.
L'écran tient la valeur qui a traversé
Le fichier que vous gardez écrit 4 quand Main appelle mark(4);. Le nom n est dans la ligne d'écriture à l'intérieur de mark, et la lettre n n'apparaît pas à l'écran comme étiquette imprimée sauf si vous l'avez mise entre guillemets. Nicher mark dans Main n'est pas la forme que cette leçon construit.
🧠 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