Классы
Класс — это именованный тип, который вы объявляете словом class. Положите public class Badge в тот же учебный файл, что и Pine, или держите его рядом с Pine как второй тип. Внутри Badge напишите короткий static-метод show, который пишет ready. В Pine оставьте Main и вызовите Badge.show();. Запустите через dotnet run. На экране должна появиться одна строка: ready. Здесь вы не считаете вниз рекурсией. Вы называете второй тип и просите его метод написать. Именно этот второй именованный тип — класс, который не только стартует программу — и есть тема страницы. Публичный стартовый класс оставьте с именем Pine.
Тип сидит рядом со стартером
До страниц про методы почти каждый пример держал Main и вспомогательные методы внутри одного публичного класса Pine. Так по-прежнему можно. На этой странице специально добавляется второй класс. Badge — имя типа. Ему не обязательно быть программой, которая стартует. Стартует Pine. В этой начальной форме оба типа могут жить в одном файле, чтобы dotnet run оставался простым. Важно имя типа: Badge владеет show, а Pine его просит.
Откройте файл Pine. Имя стартового класса остаётся Pine. Эта страница стартер не переименовывает. Удалите остаток рекурсии down, если именно такая форма всё ещё занимает весь Main. Удалите любой остаток mark. Удалите любую строку ReadLine. В файле, который вы оставляете, нет ожидания ввода.
Вне фигурных скобок Pine — но всё ещё в том же файле — напишите public class Badge. Внутри Badge напишите static void show(). Тело — одна строка записи: Console.WriteLine("ready");. На этой странице оставьте void. Метод не возвращает число. Он только пишет слово. В Badge на этой странице нет Main. Так задумано. Класс может держать методы, не будучи стартовым.
Сохраните файл перед запуском. Первая программа в рамке показывает только Badge, чтобы тип читался чисто. Вторая — полная оставляемая форма с Pine и Badge вместе.
using System;
public class Badge
{
static void show()
{
Console.WriteLine("ready");
}
}
Pine стартует; Badge пишет
У Pine остаётся public static void Main(). Внутри Main напишите один вызов: Badge.show();. Этот вызов называет тип Badge, затем точку, затем метод show. Внутри Pine вы не пишете голое show();, если show живёт не в Pine. На этой странице show принадлежит Badge, поэтому вызов несёт имя типа.
using System;
public class Pine
{
public static void Main()
{
Badge.show();
}
}
public class Badge
{
static void show()
{
Console.WriteLine("ready");
}
}
Прочитайте оставляемый файл сверху. using System; готовит короткие имена. public class Pine — стартер. public static void Main() — место, где среда выполнения начинает работу. Вызов Badge.show() входит в метод типа Badge. Этот метод пишет ready и возвращается. Затем Pine заканчивается. Слово на экране пришло из Badge, а не из WriteLine, написанного внутри самого Pine. В этом разделении и смысл: один класс стартует программу; другой держит помощника.
Запустите через dotnet run. Программа пишет одну строку и останавливается. Она не ждёт, пока вы что-то наберёте. Если dotnet run ждёт, в файле всё ещё есть ReadLine. Удалите эту строку и оставьте Badge.show(); в Pine плюс метод show в Badge. Экран показывает ready. Если экран показывает 3, затем 2, затем 1, всё ещё выполняется остаточный вызов down(3). Если экран показывает буквы Badge, в строке записи стоят кавычки: Console.WriteLine("Badge");. Не переустанавливайте .NET SDK из‑за экрана с неверной строкой.
Пройдите запуск ещё раз по порядку. C# начинает с Pine.Main. Единственный оператор там — Badge.show();. Этот вызов прыгает в метод show у Badge. Внутри show WriteLine пишет ready. Затем show заканчивается, в Main ничего не осталось, и программа завершается. На этой странице вы не клали Console.WriteLine("ready"); внутрь Pine. Вы положили его под Badge и запросили по имени типа.
Тип рядом с ролью
Прочитайте пару один раз в маленькой таблице. У каждого класса на этой странице своя работа.
📊 type beside role
| Type | Role on this page |
|---|---|
Badge |
type that holds show |
Pine |
program that holds Main |
Частая путаница — писать show(); внутри Pine без префикса Badge., когда show существует только у Badge. Тогда сборка ищет show внутри Pine и не находит. Другая путаница — положить Main только на Badge и убрать его из Pine, всё ещё ожидая прежнюю стартовую форму — для оставляемого файла этого урока держите Main на Pine. Остатки рекурсивных демо могут запутать Main. Очистите Main до Badge.show();, пока учите форму из двух типов. Здесь down не нужен.
Написание Console.WriteLine("Badge"); внутри Pine печатает слово Badge. Оно не вызывает метод на типе. Держите Badge.show();, когда хотите строку записи, которая живёт в Badge.
Чего эта страница ещё не делает
Эта страница не пишет new Badge(). Создание объекта из класса — следующая страница. Здесь вызов — Badge.show(): static-метод на самом имени типа. Поля на badge вы тоже ещё не храните. Поля ждут более поздней страницы модуля. Сейчас задача только именованный тип рядом со стартером и вызов, который использует это имя типа.
Можете сменить написанное слово внутри show на set и запустить снова. Экран должен следовать строке, которую вы положили в Badge. У Pine остаётся тот же вызов. Ещё один способ увидеть разделение: правите метод типа, вызов стартера оставляете.
Не вкладывайте Badge внутрь фигурных скобок Pine. На этой странице два класса в файле — соседи. Методы Badge сидят внутри Badge. Main сидит внутри Pine.
Вы можете объявить public class Badge, положить внутрь static void show() и вызвать Badge.show(); из Pine.Main. Запустите через dotnet run. Экран показывает строку, которую написал show. Класс — это и есть такой именованный тип. Думайте о Badge как о подписанной полке для помощников, которым не нужно стартовать программу. Pine остаётся дверью, которую вы открываете через dotnet run. Следующая страница — objects: там вы строите значение из класса через new.
Экран держит строку записи Badge
Файл, который вы оставляете, пишет ready, когда Main вызывает Badge.show();. Имя Badge стоит в вызове, а буквы Badge не появляются на экране как напечатанная метка, пока вы не взяли их в кавычки. Вложение Badge внутрь Pine — не та форма, которую строит этот урок.
🧠 Проверьте Свои Знания
Проверьте Свои Знания
Бросьте себе вызов с помощью этой интерактивной викторины и узнайте, насколько хорошо вы понимаете тему
📝 Инструкции
- Внимательно прочитайте каждый вопрос
- Выберите лучший ответ на каждый вопрос
- Вы можете пересдавать тест столько раз, сколько захотите
- Ваш прогресс будет показан вверху