第 1 课 · 约 8 分钟
C# 的 Hello World
写下你的第一行 C#,搞懂它做了什么,再弄明白为什么你会在野代码里遇到两种不同形状的 C# 程序。
最小的有用程序
从 C# 9(.NET 5+)开始,程序可以就是文件顶部的几条语句——没有类,没有 Main。今天 dotnet new console 给你的就是这个:
Console.WriteLine("Hello, world!");
Console.WriteLine 打印参数并换行。Console.Write 打印但不换行——运行这段,看两次调用挤在同一行:
Console.Write("C# is");
Console.WriteLine("one line");
注释
两种,和 C++、Java 一样。注释是写给下一个读者的(常常是三周后的你自己):
// 单行注释——// 之后全被忽略。
/* 块注释
可以跨好几行。 */
Console.WriteLine("comments are ignored"); // 这一段也是
经典模板:class Program + Main
老教程、教科书和大量生产代码用的是经典形态。它没有过时——你会在大多数工作里遇到它。两种形态说的是同一件事:找到入口,运行它。
using System;
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hello from Main!");
}
}
逐块拆:
using System;— 导入标准命名空间,让你写Console而不是System.Console。(浏览器引擎允许省略它。)class Program— 代码的命名容器。C# 是彻底的面向对象语言:所有代码都活在类型里。static void Main(string[] args)— 入口点。static表示不用先造对象就能跑;void表示不返回东西;args装命令行参数。
第一次读输入
程序开始有意思,是从它会反应开始的。Console.ReadLine() 读一行文本——先在代码下方的输入框里填好,再运行:
Console.Write("What's your name? ");
string name = Console.ReadLine();
Console.WriteLine($"Hello, {name}!");
三行代码里的两个新概念:
string name = Console.ReadLine();— 声明一个string类型的变量,把输入存进去。$"Hello, {name}!"— 插值字符串:{…}里的所有东西都是表达式,会被求值并插进去。这是现代 C# 组装文本的地道方式。