Методы
Напишите метод с именем ring, который пишет одно слово: ding. Положите эти строки записи под static void ring() с пустыми скобками. Внутри Main напишите только ring(); — имя, затем пустые скобки, затем точку с запятой. Запустите программу. Экран должен показать одну строку: ding. Main не держит WriteLine для ding. Его держит метод. Это разделение и есть урок этой страницы. Оставьте публичный класс с именем Pine.
Строки, которые живут под ring
До сих пор большая часть записи сидела прямо внутри Main. Так по-прежнему можно. Метод даёт тем же строкам собственное имя. Вы пишете строки один раз под этим именем. Затем Main просит их, записывая имя как вызов.
Откройте файл Pine. Имя класса остаётся Pine. Эта страница не переименовывает тип. Удалите любой foreach, который обходит plants или slots, если такая форма ещё есть. Удалите счётный for с break или continue, если он ещё есть. Удалите любую строку ReadLine. В файле, который вы оставляете, нет ожидания ввода и нет остатка демо цикла в Main.
Снаружи Main, всё ещё внутри фигурных скобок класса, вы напишете static void ring() с телом, которое выполняет Console.WriteLine("ding");. Полная программа в следующем блоке — её можно скопировать чисто.
Слово static остаётся в этой начальной форме, чтобы Main мог вызвать ring без создания объекта. Слово void значит, что метод не возвращает значение вызывающему — он только выполняет тело. Имя ring — метка, которую вы наберёте в Main. Пустые скобки () значат, что метод этой страницы не принимает значения. Фигурные скобки держат тело. Сохраните файл перед запуском.
Файл, который вы оставляете
Вот полная маленькая программа для этой страницы. Main держит только вызов. ring держит строку записи. В этом сохранённом файле нет счётчика индекса и нет обхода массива.
using System;
public class Pine
{
public static void Main()
{
ring();
}
static void ring()
{
Console.WriteLine("ding");
}
}
Читайте сверху. using System; готовит короткие имена. public class Pine именует тип. public static void Main() — место, где среда запуска начинает работу. Единственный оператор в Main — ring();. Ниже Main, всё ещё внутри класса, static void ring() держит Console.WriteLine("ding");. Одна строка на экране: ding.
Запустите через dotnet run. Программа пишет одну строку и останавливается. Она не ждёт, пока вы наберёте текст. Если dotnet run ждёт, в файле ещё есть ReadLine. Удалите эту строку и оставьте ring(); в Main плюс метод ring выше. Экран показывает ding. Если экран показывает leaf и mint, остаток foreach всё ещё пишет. Если экран показывает буквы ring, строка записи взяла это слово в кавычки: Console.WriteLine("ring");. Вы не переустанавливаете .NET SDK из‑за экрана с неверной строкой.
Пройдите один полный запуск по порядку. C# начинает с Main. Единственный оператор в Main — ring();. Этот вызов переходит в метод ring. Внутри ring WriteLine пишет ding. Затем ring заканчивается, и в Main больше ничего нет, поэтому программа завершается. На этой странице вы не ставили Console.WriteLine("ding"); внутрь Main. Вы поставили его под ring и запросили по имени. Если экран показывает ding, вызов достиг тела. Если после чистой сборки экран пуст, Main так и не вызвал ring.
Думайте о ring как о подписанной полке для строк записи. Main не обязан повторять эти строки. Ему нужно только имя полки, записанное как вызов. Поэтому короткий Main всё равно может дать ясную строку на экране: работа живёт под именем метода, а вызов — это запрос. Когда этот узор ясен, ещё один вызов — лишь ещё один запрос к той же полке строк записи.
Вызовите ring из Main больше одного раза
Измените только Main, чтобы он вызвал тот же метод дважды. Сам метод ring не трогайте. Тело по-прежнему пишет ding один раз за вызов.
using System;
public class Pine
{
public static void Main()
{
ring();
ring();
}
static void ring()
{
Console.WriteLine("ding");
}
}
Это второй файл. Это не файл, который вы оставляете для формы с одним вызовом, но он учит тому же методу. Запустите dotnet run. Экран должен показать две строки, каждая со словом ding. Первый вызов выполняет тело один раз. Второй вызов выполняет то же тело снова. Это повторное использование — причина дать строкам имя. Вы не копировали WriteLine второй раз под ring. Вы написали второй вызов в Main.
Если оставить только один ring();, экран снова даст один ding. Определение метода само по себе не пишет. Только вызов из Main запускает тело. Файл, который определяет ring, но никогда его не вызывает, может собраться и всё равно показать пустой экран при запуске. После двух строк верните сохранённый файл с одним вызовом, если хотите сохранить именно эту форму: один ring(); в Main.
Части заголовка метода
На этой странице заголовок — static void ring(). Читайте слева направо. static позволяет Main вызвать метод в этой начальной форме. void значит, что через вызов значение не возвращается. ring — имя. () пустые нарочно: этот урок не передаёт слова или числа в метод. Следующая страница, parameters, ставит имена внутрь этих скобок. Страница после неё, return, меняет void, когда нужно значение обратно. Оставьте оба на потом. Сегодня пустые () и void достаточно.
📊 Header piece on this page
| Piece | On this page |
|---|---|
static |
Main can call ring without an object |
void |
ring does not hand a value back |
ring |
the name you type in the call |
() |
no values go in on this page |
{ ... } |
the body that writes ding |
Вызов в Main должен точно совпадать с именем: ring(); с маленькой r, пустыми скобками и точкой с запятой. Запись Ring(); с заглавной R для C# — другое имя. Запись ring без () на этой форме не является вызовом. Запись Console.WriteLine("ring"); пишет четыре буквы слова ring; она не выполняет тело метода. Держите вызов как ring();, когда хотите ding на экране.
Частый остаток — старый обход foreach по plants, всё ещё сидящий в Main рядом с новым вызовом. Тогда экран может показать leaf и mint, или 2, 4 и 6, вместо ding — или оба вида строк вместе. Очистите Main до вызовов ring();, которые нужны этому уроку. Другая путаница — ставить метод внутрь фигурных скобок Main. Методы на этой странице сидят внутри класса, рядом с Main, а не вложенными внутрь Main.
foreach с предыдущей страницы обходил значения, уже лежащие в массиве. Эта страница массив не обходит. Она называет void метод и вызывает его. Не оставляйте foreach (string plant in plants) в том же Main и не удивляйтесь, почему экран показывает leaf вместо ding. Сохранённый Main этой сессии должен держать только вызов ring();. Тело метода держит строку записи для ding.
Теперь вы можете написать static void ring(), поставить WriteLine в его фигурные скобки и вызвать ring() из Main, чтобы экран показал ding. Два вызова пишут ding дважды без копирования тела. Пустые скобки и void остаются на этой странице нарочно. Следующая страница — parameters, где имена входят внутрь скобок, чтобы метод мог использовать значения, которые вы передаёте из Main.
Экран — это тело метода
Файл, который вы оставляете, пишет ding один раз, когда в Main один вызов. Имя ring стоит в вызове, а буквы ring не появляются на экране как напечатанное слово, пока вы не взяли их в кавычки. Пустые () стоят и в заголовке, и в вызове. Вложение ring внутрь Main — не форма, которую строит этот урок.
🧠 Проверьте Свои Знания
Проверьте Свои Знания
Бросьте себе вызов с помощью этой интерактивной викторины и узнайте, насколько хорошо вы понимаете тему
📝 Инструкции
- Внимательно прочитайте каждый вопрос
- Выберите лучший ответ на каждый вопрос
- Вы можете пересдавать тест столько раз, сколько захотите
- Ваш прогресс будет показан вверху