程序结构和执行流

更新:2007 年 11 月

创建 C# 应用程序时,您可以选择创建控制台应用程序或 Windows 窗体应用程序。这两种应用程序不仅在用户界面类型上有所区别,而且在执行流程上也会存在差异。

Windows 窗体应用程序

在典型的基于 Windows 且具有图形用户界面的应用程序中,最初启动之后的大多数操作都是为响应用户操作(如移动鼠标、选择菜单选项或键入文本)而发生的。这些操作会触发事件,然后系统会调用应用程序中称为事件处理程序的特殊方法。 基于 Windows 的程序所执行的所有操作几乎都是由事件处理程序启动的。如果未发生事件,则程序不执行任何操作。

如果您习惯使用过程性编程语言(如 COBOL、BASIC 或 FORTRAN),则必须养成使用事件驱动模型的习惯。这二者之间最基本的区别在于:在事件驱动的编程中,其他软件和操作系统本身都要调用您的应用程序中的事件处理程序方法。您无从知晓它们将调用哪些方法。您可以决定要在应用程序中处理哪些事件,但您无法提前获知这些事件发生的准确顺序。

在典型的基于 Windows 的应用程序中,保存应用程序状态的字段、数组和集合放在默认名为 Form1 的主 Form 类中。在该类的作用域内,可以从在同一 Form 类中实现的所有事件处理程序方法中访问这些成员。当调用某个事件处理程序时,它可能会执行某些操作修改应用程序数据,当方法返回时,应用程序将继续其等待状态。例如,一个窗体可能包含一个“TextBox”控件和一个“Update”(更新)按钮。例如,当用户单击该按钮时,应用程序的事件处理程序可能会获取“TextBox”中的文本,然后将该文本添加到在该类的作用域内存储的其他字符串的列表中。添加完字符串之后,应用程序将返回到等待状态。其他事件处理程序可能会对同一字符串列表执行其他类型的操作,以响应用户输入。

您自己的自定义类可以使用与 Windows 窗体相同的机制来发送和接收事件。有关更多信息,请参见 委托(C# 编程指南)

控制台应用程序

在许多控制台应用程序中,执行流从一条语句前进到下一条语句,直至运行到程序的结尾处,应用程序终止。当然,情况并不总是这样,因为控制台应用程序仍然可以受由某些对象(如计时器和网络连接)产生的键盘事件和系统事件驱动。简单的控制台应用程序通常仅由一个类组成,即一个包含 Main 方法的类。但是,比较复杂的应用程序可能包含任意数量的类。

更多信息

学习 C# 程序结构的最佳方法是查看位于 Visual C# 开发人员中心上的 Visual C# Samples(Visual C# 示例)中以及 Internet 上其他地方的示例代码。

请参见

任务

如何:创建新的 Visual C# 速成版应用程序

概念

C# 语言入门

Windows 窗体中的事件顺序

Windows 窗体中的鼠标事件