输入
程序启动后再键入 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。
大写按你键入的样子原样复制。若键入带大写 L 的 Leaf 并按 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 下面。屏幕跟随文件中的行顺序,每次等待都跟随尚未收到 Enter 的那个 ReadLine。
不要为同一个名字再写一次 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 的类型保存数字,而本页仍停留在一行键入的字母上。
🧠 测试您的知识
测试您的知识
通过这个互动测验挑战自己,看看你对这个主题的理解程度如何
📝 说明
- 仔细阅读每个问题
- 为每个问题选择最佳答案
- 您可以随时重新参加测验
- 您的进度将显示在顶部