注释
Pine 程序里的备注是给读文件的人看的。屏幕仍是 pine。Console.WriteLine("pine"); 仍是写出那个词的那一行。本页用两种形状加入备注,说明屏幕上仍只有一行 pine,再指出唯一会去掉 pine 的放法。你不会再次安装 SDK。你也不会再去核对哪一行是 Main。保留名为 Pine 的公开类,并在你保留的文件里让写出命令保持有效。
备注不是命令
命令是 C# 会执行的一行。Console.WriteLine("pine"); 是命令。它写出 pine 并结束该行。备注是你留在文件里的文字,好让你自己或下一个读者记得某件事。编译器和 runtime 会跳过备注。跳过的意思是:备注不会被执行,也不会写到屏幕上。运行之后,备注里的字母仍在文件里。你可以打开文件读到它们。你在屏幕上找不到它们。屏幕仍只有一行,那一行是 pine——只要写出命令本身没有变成备注。
有两种形状。行备注以两条斜线 // 开头。C# 从这两条斜线起,一直跳过到同一行的末尾。下一行又是普通行。块备注以 /* 开始,在第一个 */ 处结束。C# 跳过这两个标记之间的一切,包括换行。块备注可以占一行,也可以跨多行。两种形状都是备注。它们都不会写出屏幕。斜线不会打印。星号不会打印。夹在中间的词也不会打印。
你保留的文件
保留这个教学形状。写出命令上方有一行行备注,写出命令所在行上也有一行行备注,Main 附近还有一行行备注。写出命令仍在,并且没有落在斜线后面。
using System;
public class Pine
{
// the teaching type is Pine
public static void Main()
{
// a note for the reader
Console.WriteLine("pine"); // the screen is this word
}
}
从上往下读,并对每一行判断屏幕会不会接到它。using System; 这一行准备短名称,不写出屏幕。类行仍是 public class Pine。那一行给类型起名,不写出屏幕。下一行是 // the teaching type is Pine。两条斜线开始备注,所以那些词是给你看的。屏幕不显示它们。也不显示斜线。public static void Main() 是 runtime 开始的地方,那些词都不在屏幕上。这与 First Program 相比没有改变。
在 Main 里,// a note for the reader 这一行只是备注。runtime 到达它、跳过它,再走到下一行。下一行才是关键的:Console.WriteLine("pine"); // the screen is this word。把这一行读成被斜线切开的两段。斜线之前,命令是 Console.WriteLine("pine");。那条命令写出 pine 并结束该行。斜线之后,the screen is this word 这些词是备注。它们与命令在同一行上,但仍会被跳过。备注不必独占一整行。如果 // 出现在已经完成的命令之后,命令会运行,行的其余部分不会。分号结束命令。分号之后的斜线开始备注。把分号留在原处。屏幕显示 pine。它不显示 the screen is this word。没有第二行。
用安装之后同样的方式运行。在项目文件夹里输入 dotnet run。屏幕显示 pine。一行。没有引号。没有斜线。没有第二行。词 pine 仍是引号之间的那个词。它不是你在命令里另打的词,也不是你在备注里写的词。备注不会让构建失败,也不会把自己打印出来。
块备注
块备注是另一种形状。当备注长于一行,或者你希望备注的结尾是你选定的标记而不是行尾时,就用它。开标记是 /*。闭标记是 */。C# 从开到闭全部跳过,第一个 */ 就是结尾。更后面的 */ 不属于这条备注,因为备注已经结束。本页只用一条块备注,所以你会看到一个开标记和一个闭标记。
把 Main 里的行备注换成一条块备注,并让写出命令留在原处。屏幕不变。这是第二个文件。你在看备注长什么样。你之前保留的文件用的是行备注。这个用的是块备注。两者都写出 pine。
using System;
public class Pine
{
public static void Main()
{
/* a note
across two lines */
Console.WriteLine("pine");
}
}
块备注从以 /* 开头的那一行开始。a note 这些词在里面。下一行 across two lines 也在里面,因为闭标记 */ 还没出现。那第二行末尾的 */ 结束备注。然后 C# 运行 Console.WriteLine("pine");,因为那条命令在备注之外,在闭标记下面。屏幕显示 pine。a note 和 across two lines 不在屏幕上。星号和斜线也不在屏幕上。如果你把 */ 上移到第一行、紧挨在 a note 后面,第二行就不再属于备注。那第二行必须是真正的 C# 行,而 across two lines 不是命令。构建会写出错误,而不是保持安静。本页把 */ 留在第二行末尾,这样整条备注被跳过,构建保持安静。
不要试图把一条块备注放进另一条里面。第一个 */ 就会结束备注,即使你本意是让那个 */ 结束内层备注。过了第一个闭标记之后,C# 又在读命令。本页不做嵌套备注。一个开、一个闭,然后是写出命令。
会去掉 pine 的错误
在上面的文件里,备注与写出命令是不同的行,或同一行里不同的部分。错误做法是把两条斜线放在写出命令前面,让命令本身变成备注。这个第三种形状只保留到你看到空白屏幕为止,然后把写出命令放回去。这不是你要保留的文件。
using System;
public class Pine
{
public static void Main()
{
// Console.WriteLine("pine");
}
}
这时 dotnet run 在这次教学检查里不会在屏幕上写出任何有用的东西。没有 pine。没有空的引号词。没有第二行。屏幕是空白的,因为原先写出 pine 的命令落在 // 后面。Console.WriteLine("pine") 这些字母仍在文件里,你可以读到,但它们现在是备注。引号救不了它们。引号标记的是命令里的一个词。它们不会把备注变回命令。前面的两条斜线做决定,决定是:行的其余部分给读者看。
把文件改回你保留的那一份。写出行必须是 Console.WriteLine("pine");;若要备注,放在分号后面。然后 dotnet run 会再次写出 pine。如果屏幕是空白的,就找 Console 前面的 //。整次检查就是这样。不要因为备注造成的空白屏幕而去重装 .NET SDK。练习 C# 写出行时,把遗留的 Java System.out.println 习惯留在本页之外。也把发明 ASP.NET 路由留在本页之外。
屏幕仍是 pine
你现在可以在 Pine 文件里加备注而不改变屏幕。行备注以 // 开头。块备注以 /* 开头,并在第一个 */ 处结束。你保留的文件的屏幕是 pine,由 Console.WriteLine("pine"); 写出。如果 // 站在那条命令前面,屏幕就没有行。备注可以包含任何词,包括 Pine、Main 和 pine。那些词仍不在屏幕上。下一页会改变输出行的写法,让屏幕能显示不止一种短习惯。本页的备注仍是备注。
🧠 测试您的知识
测试您的知识
通过这个互动测验挑战自己,看看你对这个主题的理解程度如何
📝 说明
- 仔细阅读每个问题
- 为每个问题选择最佳答案
- 您可以随时重新参加测验
- 您的进度将显示在顶部