Параметры
Напишите метод с именем greet, который принимает одно слово внутрь. Внутри скобок напишите string name. В теле напишите hi, пробел и затем name через Console.WriteLine("hi " + name);. Из Main вызовите greet("lena");. Экран должен показать одну строку: hi lena. Буквы lena не зашиты внутри метода. Они приходят через вызов и на этот проход садятся в имя name. Эта передача — то, чему учит эта страница. Оставьте публичный класс с именем Pine.
Имя внутри скобок
На странице методов скобки после ring оставались пустыми. Строка записи всегда была ding. Здесь скобки держат типизированное имя, чтобы каждый вызов мог послать другое значение. Это типизированное имя — параметр. Значение, которое вы пишете в вызове, — аргумент для этого прохода.
Откройте файл Pine. Имя класса остаётся Pine. Эта страница не переименовывает тип. Удалите любой демо ring(); с пустыми скобками, если это всё, что ещё держит Main, и вы готовы к форме этой страницы. Удалите любой остаток foreach. Удалите любую строку ReadLine. В файле, который вы оставляете, нет ожидания ввода.
Снаружи Main, всё ещё внутри фигурных скобок класса, заголовок на этой начальной форме начинается с static void. Между скобками сидят string и затем name — сначала тип, потом имя параметра. C# пишет тип string с маленькой s на этой форме. Тело использует name без кавычек вокруг него, склеенный с фиксированным текстом "hi " через плюс. Кавычки вокруг "hi " помечают фиксированные буквы. Голое name помечает значение, пришедшее из вызова. Сохраните файл перед запуском. Полная первая программа — в следующем блоке.
Файл, который вы оставляете
Это версия, которую вы запускаете первой. Main держит вызов со значением внутри скобок. greet держит строку записи, которая использует это значение.
using System;
public class Pine
{
public static void Main()
{
greet("lena");
}
static void greet(string name)
{
Console.WriteLine("hi " + name);
}
}
Читайте сверху. using System; готовит короткие имена. public class Pine именует тип. public static void Main() — место, где среда запуска начинает работу. Вызов greet("lena"); посылает текст в параметр. static void greet(string name) держит Console.WriteLine("hi " + name);. Одна строка на экране: hi lena.
Запустите через dotnet run. Программа пишет одну строку и останавливается. Она не ждёт, пока вы наберёте текст. Если dotnet run ждёт, в файле ещё есть ReadLine. Удалите эту строку и оставьте greet("lena"); плюс метод greet выше. Экран показывает hi lena. Если экран показывает только ding, старый вызов ring(); всё ещё выполняется. Если экран показывает буквы name, строка записи взяла это слово в кавычки: Console.WriteLine("name");. Вы не переустанавливаете .NET SDK из‑за экрана с неверной строкой.
Пройдите один полный запуск по порядку. C# начинает с Main. Вызов greet("lena"); посылает текст lena в параметр name. Внутри greet WriteLine собирает hi, пробел и затем это значение, поэтому экран показывает hi lena. Затем greet заканчивается, и Main завершается. Вы не писали Console.WriteLine("hi lena"); внутри Main. Вы написали фиксированную часть один раз под greet и передали lena из вызова.
Параметр пуст, пока вызов его не заполнит. На первом вызове name держит lena только для этого прохода. На более позднем вызове с "sam" то же имя параметра держит другое значение. Вы не создаёте второй метод для второго слова; вы посылаете новый аргумент в тот же заголовок.
Тот же метод, разные слова
Измените только Main, чтобы он вызвал greet дважды с двумя разными аргументами. Сам метод greet не трогайте.
using System;
public class Pine
{
public static void Main()
{
greet("lena");
greet("sam");
}
static void greet(string name)
{
Console.WriteLine("hi " + name);
}
}
Это второй файл. Он учит тому же методу с двумя вызовами. Запустите dotnet run. Экран должен показать две строки: hi lena, затем hi sam. Первый вызов заполняет name значением lena. Второй вызов заполняет name значением sam. Вы не копировали WriteLine под greet. Вы изменили только значения внутри вызовов.
Если вызвать greet() с пустыми скобками, пока заголовок всё ещё говорит string name, сборка пишет ошибку — вызов должен дать string. Если оставить старый ring(); с пустыми скобками со страницы методов в том же Main, этот вызов не совпадает с greet, и оставшийся метод ring может всё ещё писать ding рядом с вашими строками hi. Очистите Main до вызовов greet, которые нужны этому уроку. После двух строк верните сохранённый файл с одним вызовом, если такая форма вам нужна: один greet("lena"); в Main.
Целое число как значение
Параметры нужны не только для текста. Напишите второй метод, который принимает int с именем n и пишет его. Вызовите его из Main целыми числами вроде show(9); и show(4);.
using System;
public class Pine
{
public static void Main()
{
show(9);
show(4);
}
static void show(int n)
{
Console.WriteLine(n);
}
}
Это третий файл. Это не файл, который вы оставляете для формы greet. Запустите dotnet run. Экран должен показать две строки: 9, затем 4. В вызове нет кавычек вокруг 9 или 4 — это значения int, не текст. Внутри show Console.WriteLine(n) пишет число, которое пришло. После этих двух строк верните демо greet. Обе версии — корректный C#. Они учат одной идее: вызов посылает значение, параметр держит его для тела.
Прочитайте запуск с int ещё раз. Первый вызов ставит n в 9 и пишет 9. Второй вызов ставит n в 4 и пишет 4. Имя n объявлено один раз в заголовке как int n. Каждый вызов даёт ему новое значение на этот проход. Передача слова в кавычках в show, например show("nine");, не совпадает с int на этой форме — сборка пишет ошибку. Передача голого числа в greet, например greet(3);, не совпадает с string — сборка снова пишет ошибку. Сопоставьте тип аргумента с типом параметра.
Частая путаница — писать имя параметра как текст: Console.WriteLine("name");. Это пишет буквы n-a-m-e. Это не пишет lena. Держите Console.WriteLine("hi " + name) без кавычек вокруг name, когда хотите буквы аргумента на экране. Другая путаница — объявлять параметр в Main вместо заголовка метода. Типизированное имя принадлежит внутрь greet(...) или show(...), а не внутрь скобок Main на этой странице. Пустые () со страницы ring недостаточны, когда заголовок просит string name.
void по-прежнему значит, что через вызов ничего не возвращается. Вы можете положить string name или int n внутрь скобок метода, передать совпадающее значение в вызове и писать это значение из тела. Два вызова с двумя аргументами пишут две разные строки без копирования метода. Следующая страница — return, где метод отдаёт значение обратно в Main вместо того, чтобы только писать внутри тела.
Экран держит аргумент
Файл, который вы оставляете, пишет hi lena, когда Main вызывает greet("lena");. Имя name в строке записи без кавычек вокруг него. Кавычки вокруг name пишут буквы, не аргумент. Пустые () в вызове не совпадают с заголовком, который просит string name.
🧠 Проверьте Свои Знания
Проверьте Свои Знания
Бросьте себе вызов с помощью этой интерактивной викторины и узнайте, насколько хорошо вы понимаете тему
📝 Инструкции
- Внимательно прочитайте каждый вопрос
- Выберите лучший ответ на каждый вопрос
- Вы можете пересдавать тест столько раз, сколько захотите
- Ваш прогресс будет показан вверху