变量
Console.WriteLine(plant) 写出 leaf,写出行上没有引号。词 leaf 在保存行上,在名字 plant 下面。到目前为止,词都夹在写出行本身的引号之间,所以换屏幕就意味着改那一行。引号挪到保存这个词的那一行。屏幕仍然显示 leaf。公共类名保持 Pine。你不会再次安装 SDK。
名字保存字母
打开 Pine 文件。类名仍是 Pine。本页不重命名类型。在 Main 里、写出行上方,加一行:创建名字并把一个词存进去:string plant = "leaf";。关键字 string 表示这个名字保存字母。plant 是名字,以小写 p 开头。= 号保存这个词。引号里是 leaf,全小写,就是上一页放在写出行上的那个词。分号结束这一行。然后改写出行,让它不再带引号。变成 Console.WriteLine(plant);。名字 plant 是裸的。p 前没有引号,t 后也没有。保存文件。
你要保留的文件
保留这个教学形状。名字 plant 保存 leaf。写出行使用那个名字,且不含引号。
using System;
public class Pine
{
public static void Main()
{
string plant = "leaf";
Console.WriteLine(plant);
}
}
从上往下读,判断屏幕能收到什么。using System; 准备短名字,并不写屏幕。public class Pine 给类型起名。它不写屏幕。public static void Main() 是 runtime 开始的地方。这些词都不是给屏幕的字母。下一行才是创建名字的行。string plant = "leaf"; 把字母 l、e、a、f 存进名字 plant。这一行不会把那些字母写到屏幕上。保存不是写出。经过这一行时屏幕仍是空白。接下来的 Console.WriteLine(plant); 才是写出行。C# 读取名字 plant,取出它保存的字母,写出来,并结束该行。屏幕显示 leaf。一行。没有引号。名字本身的字母 plant 不在屏幕上。Console 不在屏幕上。分号不在屏幕上。
用 dotnet run 运行。屏幕显示 leaf。若屏幕显示 plant,说明写出行在 plant 两侧加了引号。你要保留的文件不是这样。若屏幕仍显示上一页那种带引号的词,说明写出行仍在用引号,而不是裸名字。看 string 行引号之间的字母,并检查写出行是否使用裸名字。屏幕显示错词时,你不会重装 .NET SDK。
保存行与写出行
把这两项工作分开记。
📊 Variable habits for plant
| Line | Job | Screen |
|---|---|---|
string plant = "leaf"; |
stores letters in the name | nothing from this line |
Console.WriteLine(plant); |
writes the letters the name holds | leaf |
Console.WriteLine("plant"); |
writes the quoted letters | plant |
plant = "stem"; |
replaces the stored letters | nothing from this line alone |
改词,写出行留在原处
名字的意义在于:写出行可以不动,被保存的词可以变。在第一条写出行下面,把同一个名字改成新词,再写出一次这个名字。新的保存行是 plant = "stem";。它不以 string 开头。plant 已经存在,所以这一行只替换名字保存的字母。leaf 换成 stem,全小写。下一条写出行仍是 Console.WriteLine(plant);。形状与第一条写出行相同。屏幕现在有两行,因为每个 WriteLine 都会结束自己的行。第一行是 leaf,来自那时名字保存的字母。第二行是 stem,来自 plant = "stem"; 之后名字保存的字母。
这是第二个文件。不是你要保留的文件。你要保留的文件只有一条保存行和一条写出行,屏幕是 leaf。想看词变化时用这第二种形状,然后把单条保存行和单条写出行放回去。
using System;
public class Pine
{
public static void Main()
{
string plant = "leaf";
Console.WriteLine(plant);
plant = "stem";
Console.WriteLine(plant);
}
}
运行 dotnet run。屏幕显示 leaf,下一行屏幕是 stem。两行。leaf 在上,因为第一个 Console.WriteLine(plant); 执行时 plant 仍保存着 leaf。stem 在下,因为第二个 Console.WriteLine(plant); 在 plant = "stem"; 之后执行。名字 plant 不出现在任何屏幕行上。若两行都是 leaf,说明缺少第二条保存行,或它仍写着 "leaf"。若两行都是 stem,说明第一条保存行已经是 "stem",或第一条写出行落在改动之下。屏幕跟随文件中的行顺序。
不要为同一个名字第二次写 string。在已经创建了 plant 的行下面再写 string plant = "stem";,是另一种错误。那一行试图再次创建 plant。构建会写出错误,不会保持安静。修法是删掉第二个 string,留下 plant = "stem";。名字只创建一次。后面的行只改它保存的字母。你要保留的文件里根本没有第二条保存行。
名字两侧加引号会写出名字
你要保留的文件里,写出行是没有引号的 Console.WriteLine(plant);。若在名字两侧加引号,这一行就变成 Console.WriteLine("plant");。这些引号做的事与上一页相同:标出给屏幕的字母。中间的字母是 p、l、a、n、t。C# 不会查找这个名字,因为带引号的词不是名字。名字 plant 仍可在上一行保存 leaf,屏幕却仍显示 plant。被保存的 leaf 不会写出,因为写出行从未使用这个名字。
这是第三个文件。不是你要保留的文件。保留到能看到单独一行 plant,然后再次去掉写出行上的引号。
using System;
public class Pine
{
public static void Main()
{
string plant = "leaf";
Console.WriteLine("plant");
}
}
运行 dotnet run。屏幕显示 plant。一行。没有引号。不是 leaf。不是 stem。若你想要 leaf,写出行必须是裸名字 Console.WriteLine(plant);。引号属于保存行,包在 leaf 两侧,而不是包在写出行上的名字两侧。把残留的 Java String 习惯对应到本页的 C# 关键字 string。不要在本页发明 ASP.NET 路由。
名字必须先存在
C# 从上往下读文件。创建名字的行必须在使用名字的行之上。若先写 Console.WriteLine(plant);,然后才写 string plant = "leaf";,写出行在 plant 存在之前就点名了 plant。构建会写出错误。它不会保持安静。构建在写错误时,没有可信的屏幕。修法是把 string 行移回写出行上方。
这第四个文件是弄乱的顺序。不是你要保留的文件。只保留到构建写出错误,然后把 string 行重新放回顶部。
using System;
public class Pine
{
public static void Main()
{
Console.WriteLine(plant);
string plant = "leaf";
}
}
屏幕就是名字保存的那个词
你现在可以把一个词存进名字,并在不把该词写在写出行上的情况下把它写出来。string plant = "leaf"; 保存 leaf。Console.WriteLine(plant); 写出 leaf 并结束该行。之后 plant = "stem"; 改变被保存的词,同一名字的后一个 WriteLine 写出 stem。名字两侧的引号会写出名字本身的字母。创建行必须位于第一次使用该名字的行之上。下一页会读取你在程序运行时键入的词,并存进一个名字,这样屏幕就能显示文件引号之间从未写过的字母。
🧠 测试您的知识
测试您的知识
通过这个互动测验挑战自己,看看你对这个主题的理解程度如何
📝 说明
- 仔细阅读每个问题
- 为每个问题选择最佳答案
- 您可以随时重新参加测验
- 您的进度将显示在顶部