Microsoft .NET即将成为开发企业软件的主要平台,而C#的优势在于可以充分利用.NET平台所提供的全部工具。C#是从C++衍生出来的面向对象的语言,其特色在于类型安全的程序设计。本文将通过剖析一个名为Greeter的Windows
应用程序的实例,来介绍C# 语言。
Greeter是个对话式应用程序,先接收用户名输入,然后显示一个问候语,如图A所示。该程序比诸如"hello, world" 这样的程序稍微复杂些。Greeter程序是在Visual
Studio.NET.软件的Beta1版本下用C#编写的。该程序的源代码位于this sidebar.

图A Greeter程序运行时的运行结果 Greeter
该应用程序由一个名为GreeterForm 的类构成,该类完全包含在文件GreeterForm.cs中。类GreeterForm派生自.NET 框架类
System.WinForms.Form (源程序中的第十行)。 C#和.NET体系都支持名称空间。名称空间是个分组机制,它可以把系统中的数据类型在逻辑上组织在一起。一个名称空间可以包含其他名称空间或者数据类型。System.WinForms.Form表示类Form在WinForms的名称空间中,
而类WinForms又位于System的名称空间中。 WinForms名称空间中包含了标准的Windows 程序设计中的数据类型。
GreeterForm 包含了程序的入口点:即静态的方法Main (第71行)。 同C++类似,C#既支持静态方法,也支持实例类方法。不管C#程序是用于命令行式的界面,还是用于Windows程序界面,程序中的入口点总是名为Main的静态方法,对于那些熟悉Windows
SDK程序设计的人来说,不存在全局的WinMain 函数(在C#中没有全局函数)。Main可以不带形式参数,比如GreeterForm就是这样的,Main可以不返回任何值,也可以返回一个整数,形式参数可以取任何名称,但必须定义为字符串数组。C#支持方法重载,虽然Main是程序中唯一的入口点,它也可以被重载。
Main方法中调用了Application.Run方法 ,Run方法的实在参数是GreeterForm的一个新对象。Application 类是在名称空间System.WinForms
下定义的。指示语using System.WinForms; (源程序第7行)把名称空间System.WinForms 中定义的类型引入到当前的名称空间中。这些数据就可以直接在Application中引用,而无需限定。顺便说明一下,可以把基类GreeterForm直接定义为Form,因为Visual
Studio向导可以为你自动生成完整的限定名称。
Application.Run方法在当前线程中启动了一个message循环,显示出表单GreeterForm。 一旦用户点击了该表单的close 按钮,Run就返回到Main,并且释放表单。一旦Main
结束,整个程序也结束。Main 方法和Application 类都提供了类似于MFC的CWinApp 类的功能。类Application 和CWinApp
都提供了封装了message信息循环的Run 方法。 |