本模块开始时,我们假定你已使用 C# 编写了一个“Hello World”应用程序。 如果你还没有完成该步骤,可以查看此学习路径的第一个模块,即编写第一个 C# 代码。
为简单起见,我们将重写“Hello World”应用程序。 这一次,我们将从 .NET 的角度来观察发生的情况。
使用 C# 生成简单的应用
之前,你已了解 Try .NET 提供了一种简单的方法来试验 C# 和 .NET。 你无需在本地计算机上安装任何软件即可使用它。
备注
在此模块中,你将使用 Try .NET 的内置版本。 如果要在完成本练习后试验该应用程序,请访问
https://try.dot.net
。 Try .NET 是一个无需在本地计算机上安装任何东西就能试用小型代码示例的好方法。
步骤 1 - 编写代码
在 .NET 编辑器中,在此网页的右侧键入以下代码示例。 或复制代码示例,然后将其粘贴到 .NET 编辑器中。
Console.WriteLine("Hello world!");
正如你在必备模块中所学到的,“Hello world”是一种简单而规范的代码示例,开发人员编写该示例是为了理解新编程语言的基本语法。 从这个简单的示例中,可以学习很多关于 C# 语法的知识。 但现在,我们将使用它来深入了解 .NET。
步骤 2 - 运行代码
按 .NET 编辑器右侧的绿色“运行”按钮。 假设你正确插入了 C# 代码,那么“Hello World!”一词将显示在下面的“输出”窗格中。
重要
如果在运行此代码时看到任何错误,请复制该代码,将其粘贴到 .NET 编辑器中,然后尝试再次运行此代码。
你编写的代码会发生什么情况?
Try .NET 浏览器版本隐藏了使用 Try .NET、Visual Studio 2022 或 Visual Studio Code 生成完整应用程序时会看到的一些代码。
当包含隐藏的代码时,该示例如下所示:
using System;
public class Program
{
public static void Main()
{
Console.WriteLine("Hello world!");
}
}
不过,浏览器内 Try .NET 环境使用了你前面学习的相同步骤。 唯一的区别是,为了简化体验而隐藏了一些代码。
在展开的代码视图上,可以看到一系列大括号 { }
。 C# 使用一对大括号来定义代码块。 不同种类的代码块用于不同的目的。
代码 public static void Main()
及其一组大括号定义一种称为“方法”的代码块类型。 一个方法包含一组代码,这些代码可在软件系统中实现单一用途或职责。
在本示例中,该方法只包含一行代码。 其目的是显示一条消息。 较大的程序可以有成百或数千个方法。
在称为“类”的其他代码块中组织方法。 一个类可以包含一个或多个方法。 理想情况下,一个类中的所有方法在系统中都有相关的用途。 前面代码中的类名为 Program
。
在插入的代码行中,Console.WriteLine()
正在调用或运行方法 WriteLine()
。 方法 WriteLine()
包含在类 Console
中。
此代码在哪里? 它位于基类库。 实际上,其全名是 System.Console.WriteLine()
。 在上面的代码中,你会看到第一行是:
using System;
对 Console.WriteLine()
的调用中省略了 System
一词。 但是第一行代码 using System;
将告诉 C# 编译器,如果它在代码中找不到方法定义,则在基类库中查找。
备注
有关 method、class、System、using 等特定于 C# 的术语,请不要担心。 稍后可以了解相关信息。 现在的重点是编译和执行代码的过程。
将代码插入 Main() 方法后会发生什么情况?
在此练习中,最重要的部分是将你编写的代码插入 Main()
方法后会发生的情况。 请记住,此过程发生在你使用的服务器上。
- 编译新代码的命令将调用 C# 编译器。
- C# 编译器确保你的代码可以编译,且无任何语法错误。 如果它无法编译你的代码,编译器将停止并将错误消息发送回“输出”窗格。
- 如果 C# 编译器成功,.NET 运行时将打开新编译的 .NET 程序集。 默认情况下,它会在名为
Program
的类中查找名为Main()
的方法,以便开始运行指令。 - .NET 逐条运行指令,评估每一行代码。 它运行指令,然后移到下一行代码。
- 在本示例中,当打印“Hello world!”一词的指令完成后,正在运行的路径将继续下一行,但找不到任何内容。 路径结束后,.NET 运行时从其内存中删除程序。 同时,
WriteLine()
指令的输出将传送回你的 Web 浏览器。
这一系列事件,以及编程语言、编译器和运行时之间职责的基本划分,是入门时需要了解的最重要的概念。