Chargement...

Paramètres

Écrivez une méthode nommée greet qui prend un mot en entrée. Entre les parenthèses écrivez string name. Dans le corps écrivez hi, un espace, puis name avec Console.WriteLine("hi " + name);. Depuis Main appelez greet("lena");. L'écran doit montrer une ligne : hi lena. Les lettres lena ne sont pas figées dans la méthode. Elles arrivent par l'appel et s'asseyent dans le nom name pour ce passage. Ce transfert est ce que cette page enseigne. Gardez la classe publique nommée Pine.

Un nom entre les parenthèses

Sur la page des méthodes, les parenthèses après ring restaient vides. La ligne d'écriture était toujours ding. Ici les parenthèses tiennent un nom typé pour que chaque appel puisse envoyer une valeur différente. Ce nom typé est un paramètre. La valeur que vous écrivez dans l'appel est l'argument pour ce passage.
Ouvrez le fichier Pine. Le nom de la classe reste Pine. Cette page ne renomme pas le type. Supprimez toute démo ring(); avec parenthèses vides si c'est tout ce que Main tient encore et que vous êtes prêts pour la forme de cette page. Supprimez tout reste de foreach. Supprimez toute ligne ReadLine. Le fichier que vous gardez n'attend pas de saisie.
Hors de Main, toujours dans les accolades de la classe, l'en-tête commence par static void sur cette forme débutant. Entre les parenthèses se placent string puis name — le type d'abord, puis le nom du paramètre. C# écrit le type string avec un s minuscule sur cette forme. Le corps utilise name sans guillemets autour, joint au texte fixe "hi " avec un plus. Les guillemets autour de "hi " marquent les lettres fixes. Le name nu marque la valeur arrivée de l'appel. Enregistrez le fichier avant de lancer. Le premier programme complet est dans le cadre suivant.

Le fichier que vous gardez

Voici la version que vous lancez en premier. Main tient l'appel avec une valeur entre les parenthèses. greet tient la ligne d'écriture qui utilise cette valeur.

greet takes a string

csharp
using System;

public class Pine
{
    public static void Main()
    {
        greet("lena");
    }

    static void greet(string name)
    {
        Console.WriteLine("hi " + name);
    }
}

Lisez-le du haut. using System; prépare les noms courts. public class Pine nomme le type. public static void Main() est là où le runtime démarre. L'appel greet("lena"); envoie le texte dans le paramètre. static void greet(string name) tient Console.WriteLine("hi " + name);. Une ligne à l'écran : hi lena.

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 greet("lena"); plus la méthode greet ci-dessus. L'écran montre hi lena. Si l'écran montre seulement ding, un ancien appel ring(); tourne encore. Si l'écran montre les lettres name, une ligne d'écriture a des guillemets autour de ce mot : Console.WriteLine("name");. Vous ne réinstallez pas le SDK .NET pour un écran qui montre la mauvaise ligne.

Parcourez un lancement complet dans l'ordre. C# démarre à Main. L'appel greet("lena"); envoie le texte lena dans le paramètre name. Dans greet, WriteLine construit hi, un espace, puis cette valeur, donc l'écran montre hi lena. Puis greet se termine et Main se termine. Vous n'avez pas écrit Console.WriteLine("hi lena"); dans Main. Vous avez écrit la partie fixe une fois sous greet et passé lena depuis l'appel.
Le paramètre est vide jusqu'à ce que l'appel le remplisse. Au premier appel, name tient lena pour ce passage seulement. À un appel plus tard avec "sam", le même nom de paramètre tient une autre valeur. Vous ne créez pas une deuxième méthode pour le deuxième mot ; vous envoyez un nouvel argument dans le même en-tête.

Même méthode, mots différents

Changez seulement Main pour qu'il appelle greet deux fois avec deux arguments différents. Laissez la méthode greet elle-même tranquille.

greet with two arguments

csharp
using System;

public class Pine
{
    public static void Main()
    {
        greet("lena");
        greet("sam");
    }

    static void greet(string name)
    {
        Console.WriteLine("hi " + name);
    }
}

Voici le deuxième fichier. Il enseigne la même méthode avec deux appels. Lancez dotnet run. L'écran doit montrer deux lignes : hi lena, puis hi sam. Le premier appel remplit name avec lena. Le deuxième appel remplit name avec sam. Vous n'avez pas copié le WriteLine sous greet. Vous n'avez changé que les valeurs dans les appels.
Si vous appelez greet() avec des parenthèses vides alors que l'en-tête dit encore string name, la compilation écrit une erreur — l'appel doit fournir un string. Si vous laissez un ancien ring(); avec parenthèses vides de la page des méthodes dans le même Main, cet appel ne correspond pas à greet, et une méthode ring restante peut encore écrire ding à côté de vos lignes hi. Nettoyez Main pour les appels greet dont cette leçon a besoin. Après avoir vu deux lignes, remettez le fichier à un appel si c'est la forme que vous voulez garder : un greet("lena"); dans Main.

Un nombre entier comme valeur

Les paramètres ne sont pas seulement pour le texte. Écrivez une deuxième méthode qui prend un int nommé n et l'écrit. Appelez-la depuis Main avec des nombres entiers comme show(9); et show(4);.

show takes an int

csharp
using System;

public class Pine
{
    public static void Main()
    {
        show(9);
        show(4);
    }

    static void show(int n)
    {
        Console.WriteLine(n);
    }
}

Voici le troisième fichier. Ce n'est pas le fichier que vous gardez pour la forme greet. Lancez dotnet run. L'écran doit montrer deux lignes : 9, puis 4. Aucun guillemet n'entoure 9 ou 4 dans l'appel — ce sont des valeurs int, pas du texte. Dans show, Console.WriteLine(n) écrit le nombre arrivé. Après avoir vu ces deux lignes, remettez la démo greet. Les deux versions sont du C# valide. Elles enseignent la même idée : l'appel envoie une valeur, le paramètre la tient pour le corps.
Relisez le lancement int une fois. Le premier appel met n à 9 et écrit 9. Le deuxième appel met n à 4 et écrit 4. Le nom n est déclaré une fois dans l'en-tête comme int n. Chaque appel lui donne une nouvelle valeur pour ce passage. Passer un mot entre guillemets dans show, comme show("nine");, ne correspond pas à int sur cette forme — la compilation écrit une erreur. Passer un nombre nu dans greet, comme greet(3);, ne correspond pas à string — la compilation écrit encore une erreur. Faites correspondre le type de l'argument au type du paramètre.

Une confusion courante est d'écrire le nom du paramètre comme texte : Console.WriteLine("name");. Cela écrit les lettres n-a-m-e. Cela n'écrit pas lena. Gardez Console.WriteLine("hi " + name) sans guillemets autour de name quand vous voulez les lettres de l'argument à l'écran. Une autre confusion est de déclarer le paramètre dans Main au lieu de l'en-tête de la méthode. Le nom typé appartient dans greet(...) ou show(...), pas dans les parenthèses de Main sur cette page. Des () vides de la page ring ne suffisent plus une fois que l'en-tête demande string name.

void signifie encore que rien ne revient par l'appel. Vous pouvez mettre string name ou int n dans les parenthèses d'une méthode, passer une valeur assortie dans l'appel, et écrire cette valeur depuis le corps. Deux appels avec deux arguments écrivent deux lignes différentes sans copier la méthode. La page suivante est return, où une méthode rend une valeur à Main au lieu d'écrire seulement dans le corps.

L'écran tient l'argument

Le fichier que vous gardez écrit hi lena quand Main appelle greet("lena");. Le nom name est dans la ligne d'écriture sans guillemets autour. Des guillemets autour de name écrivent des lettres, pas l'argument. Des () vides sur l'appel ne correspondent pas à un en-tête qui demande string name.

🧠 Testez Vos Connaissances

Prêt à Commencer

Testez Vos Connaissances

Mettez-vous au défi avec ce quiz interactif et voyez à quel point vous comprenez le sujet

❓
5
Questions
🎯
70%
Pour Réussir
♾️
∞
Temps
🔄
∞
Tentatives

📝 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