Ввод
Наберите leaf после того, как программа уже стартовала, и экран покажет leaf. Этого слова в файле нет. Файл Pine создаёт имя plant и ждёт. Вы набираете leaf и нажимаете Enter. Console.WriteLine(plant) пишет leaf. До сих пор другой экран означал правку строки хранения, потому что слово сидело в файле между кавычками. Публичный класс оставьте с именем Pine. SDK вы снова не устанавливаете.
Файл ждёт одну набранную строку
Откройте файл Pine. Имя класса остаётся Pine. Эта страница тип не переименовывает. Внутри Main замените старую строку хранения, где были кавычки. Новая строка хранения — string plant = Console.ReadLine();. Ключевое слово string по-прежнему говорит, что это имя держит буквы. plant по-прежнему начинается с маленькой p. Знак = по-прежнему сохраняет буквы в этом имени. Новое — правая сторона. У Console.ReadLine() кавычек нет. На этой строке нет leaf. Строка просит у консоли одну набранную строку. Программа ждёт там, пока вы не нажмёте Enter. Когда вы нажали Enter, ReadLine сохраняет буквы, которые вы набрали до этого Enter. Сам Enter он не сохраняет. Затем строка заканчивается точкой с запятой. Хранение по-прежнему не запись. Программа ещё не написала свою строку.
Строка записи остаётся голым именем — той же формы, что файл, который вы хранили на прошлой странице: Console.WriteLine(plant);. Без кавычек. C# читает имя plant, пишет буквы, которые это имя держит, и заканчивает строку. Эти буквы — то, что только что сохранил ReadLine. Если вы набрали leaf, программа пишет leaf. Если вы набрали stem, программа пишет stem. Между этими двумя запусками файл не менялся. Сохраните файл.
Файл, который вы храните
Сохраните эту учебную форму. Слова, которое вы наберёте, в файле нет. Поищите в файле буквы l, e, a, f. Их там нет. Строка хранения названа plant. Строка записи использует plant и не содержит кавычек.
using System;
public class Pine
{
public static void Main()
{
string plant = Console.ReadLine();
Console.WriteLine(plant);
}
}
Читайте файл сверху и решите, что может попасть на экран. using System; готовит короткие имена. public class Pine называет тип. public static void Main() — место, где runtime начинает. Ни одно из этих слов не буквы для экрана. string plant = Console.ReadLine(); сохраняет одну набранную строку в plant. Сама по себе она ничего не пишет. Console.WriteLine(plant); — единственная строка записи. Она пишет сохранённые буквы и заканчивает строку. Имя plant не пишется. Console не пишется. Точка с запятой не пишется.
Что вы набираете и что пишет программа
Запустите через dotnet run. После этой команды программа ждёт на Console.ReadLine(). Она ещё не закончила и ещё не написала leaf, потому что вы ещё не дали ей строку. Курсор стоит на новой строке. Наберите буквы l, e, a, f. Терминал показывает эти буквы по мере нажатий. Это показ — терминал повторяет ваши клавиши. Это не Console.WriteLine. Затем нажмите Enter.
Enter заканчивает ожидание. ReadLine сохраняет leaf в plant и не сохраняет сам Enter. Затем WriteLine пишет leaf и заканчивает строку. Вы видите leaf, а под ним снова leaf. Первый leaf — клавиши, которые показал терминал. Второй leaf — строка программы. У строки программы нет кавычек. Это четыре буквы, затем строка заканчивается. Программа заканчивается после этой строки записи. Если судить нужно только строку программы leaf, смотрите на строку, которая появляется после Enter.
Если строка программы — plant, на строке записи вокруг plant стоят кавычки. В файле, который вы храните, их нет. Если dotnet run сразу пишет leaf и никогда не ждёт, файл всё ещё хранит слово в кавычках, например string plant = "leaf";, и никогда не вызывает ReadLine. Ищите кавычки вокруг leaf. В файле, который вы храните, их нет. Из‑за экрана с неверным словом вы .NET SDK не переустанавливаете.
Заглавные копируются так, как вы их набираете. Если набрать Leaf с большой L и нажать Enter, строка программы будет Leaf. В файле этих букв по-прежнему нет. Пустой Enter тоже настоящая строка. Нажмите Enter, не набирая букв. ReadLine не сохраняет букв в plant. WriteLine пишет строку без букв. Программа выполнилась. Ожидание закончилось, потому что пришёл Enter. Файл, который вы храните, — тот, который вы пробуете с leaf, четырьмя маленькими буквами.
Пробел остаётся в строке
ReadLine читает до Enter, а не до пробела. Наберите leaf, затем пробел, затем stem, затем Enter. Буквы, сохранённые в plant, — это leaf, пробел и stem. Console.WriteLine(plant) пишет leaf stem. Пробел — сохранённый символ, так же как пробел внутри кавычек сохранялся, когда слово жило в файле. Эта страница не режет строку по пробелу. Файл, который вы храните, по-прежнему однострочный читатель. Когда нужен пробел на экране, вы меняете только то, что набираете, а не файл.
Две набранные строки, два Enter
Одна программа может принять вторую строку. Под первой строкой записи сохраните новую строку в то же имя, затем снова напишите имя. Новая строка хранения — plant = Console.ReadLine();. Она не начинается с string. plant уже существует, поэтому эта строка только заменяет буквы, которые имя держит. Следующая строка записи снова Console.WriteLine(plant);. Теперь программа ждёт дважды. Каждый ReadLine ждёт свой Enter.
Это второй файл. Это не файл, который вы храните. Файл, который вы храните, ждёт один раз и пишет один раз. Используйте эту вторую форму, когда нужны две набранные строки, затем верните один ReadLine и один WriteLine.
using System;
public class Pine
{
public static void Main()
{
string plant = Console.ReadLine();
Console.WriteLine(plant);
plant = Console.ReadLine();
Console.WriteLine(plant);
}
}
Запустите dotnet run. Программа ждёт. Наберите leaf и нажмите Enter. Терминал показывает leaf, а программа пишет leaf под ним. Программа снова ждёт. Она ещё не закончила. Наберите stem и нажмите Enter. Терминал показывает stem, а программа пишет stem под ним. Строки программы — leaf, затем stem. Эхо клавиш сидит над каждой из этих строк. Если обе строки программы говорят leaf, второй ReadLine не выполнялся, или вы оба раза набрали leaf. Если программа пишет stem до того, как вы набрали вторую строку, второй WriteLine не стоит под вторым ReadLine. Экран следует порядку строк в файле, и каждое ожидание следует за ReadLine, который ещё не получил Enter.
Не пишите string второй раз для того же имени. string plant = Console.ReadLine(); под строкой, которая уже создала plant, — другая ошибка. Эта строка пытается создать plant снова. Сборка пишет ошибку и не остаётся тихой. Исправление — удалить второй string и оставить plant = Console.ReadLine();. Имя создаётся один раз. Позже строки только меняют буквы, которые оно держит. В файле, который вы храните, второго ReadLine вообще нет.
Кавычки вокруг имени пишут имя
Строка записи в файле, который вы храните, — Console.WriteLine(plant); без кавычек. Если после настоящей набранной строки поставить кавычки вокруг имени, строка станет Console.WriteLine("plant");. Эти кавычки помечают буквы для экрана. Буквы между ними — p, l, a, n, t. C# имя не ищет. Вы можете набрать leaf и нажать Enter, и ReadLine может сохранить leaf в plant, а строка программы всё равно покажет plant. Набранное слово не пишется, потому что строка записи никогда не использовала имя.
Это третий файл. Это не файл, который вы храните. Держите его достаточно долго, чтобы после набора leaf увидеть одну строку программы plant, затем снова снимите кавычки со строки записи.
using System;
public class Pine
{
public static void Main()
{
string plant = Console.ReadLine();
Console.WriteLine("plant");
}
}
Имя должно существовать после ReadLine
C# читает файл сверху. Строка, которая заполняет plant, должна быть выше строки, которая пишет plant. Если сначала поставить Console.WriteLine(plant);, а только потом string plant = Console.ReadLine();, строка записи называет plant до того, как plant существует. Сборка пишет ошибку. Она не остаётся тихой. Пока сборка пишет ошибку, доверять экрану нельзя. Исправление — вернуть строку ReadLine выше строки записи.
Этот четвёртый файл — сломанный порядок. Это не файл, который вы храните. Держите его только пока сборка пишет ошибку, затем снова поставьте строку ReadLine сверху.
using System;
public class Pine
{
public static void Main()
{
Console.WriteLine(plant);
string plant = Console.ReadLine();
}
}
WriteLine не сохраняет набранную строку
Строка хранения должна вызывать ReadLine, а не WriteLine. Если строка — string plant = Console.WriteLine();, сборка пишет ошибку. WriteLine пишет на экран и не возвращает буквы в имя. Это не ожидающее хранение. Пока сборка пишет ошибку, набранному leaf доверять нельзя. Исправление — снова поставить Console.ReadLine() справа от =.
Этот пятый файл — неверный вызов хранения. Это не файл, который вы храните. Держите его только пока сборка пишет ошибку, затем верните ReadLine.
using System;
public class Pine
{
public static void Main()
{
string plant = Console.WriteLine();
Console.WriteLine(plant);
}
}
Экран — это строка, которую вы набрали
Теперь вы можете заполнить имя с клавиатуры и написать эту строку, не кладя слово между кавычками в файле. string plant = Console.ReadLine(); ждёт Enter и сохраняет набранные буквы. Console.WriteLine(plant); пишет эти буквы и заканчивает строку. Второй ReadLine ждёт снова. Кавычки вокруг имени пишут буквы самого имени. Строка ReadLine должна стоять выше первой строки, которая использует имя. WriteLine на стороне хранения — не хранение. Следующая страница начинает Value Types, чтобы имя могло держать число с типом, отличным от string, а эта страница остаётся на одной набранной строке букв.
🧠 Проверьте Свои Знания
Проверьте Свои Знания
Бросьте себе вызов с помощью этой интерактивной викторины и узнайте, насколько хорошо вы понимаете тему
📝 Инструкции
- Внимательно прочитайте каждый вопрос
- Выберите лучший ответ на каждый вопрос
- Вы можете пересдавать тест столько раз, сколько захотите
- Ваш прогресс будет показан вверху