1.3 最简单的C#程序
1.3.1 C#项目的创建与分类
VS 2010 可用于多种类型的快速程序开发,如基于 Web 的应用程序、基于 WPF 应用程序、基于Windows的应用程序、控制台应用程序和移动应用程序等。
单击【文件】→【新建】→【项目】按钮,系统弹出【新建项目】对话框,如图1.24所示。
图1.24 【新建项目】对话框
在“模板”栏中选择模板类型,选择模板后,在“名称”栏中输入项目的名称,在“位置”栏中输入保存项目的路径,在“解决方案名称”栏中输入解决方案的名称,单击【确定】按钮即可进入项目开发工作区。新建立的项目都保存在设定的解决方案中,一个解决方案中可以包含一个或多个项目。在默认情况下,解决方案的名字与项目名称相同,而且保存项目和解决方案的文件夹名就是项目名称。如果要将新建的项目加入当前打开的解决方案中,可以在“解决方案”下拉列表中选择“添加到解决方案”选项,单击【确定】按钮后,新建立的项目将添加到打开的解决方案中,如图1.25所示。
图1.25 添加项目到解决方案中
最常见的C#项目有三大类:Windows窗体应用程序、控制台应用程序和ASP.NET Web应用程序,VS 2010都提供了默认模板。
1.3.2 第一个控制台应用程序
【例1.1】 在控制台窗口中输出“Hello World!”字样。
在.NET开发环境中新建一个控制台应用程序项目后,在源代码文件中输入如下语句:
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Ex1_1 { class Program { static void Main(string[] args) { Console.WriteLine("Hello World!"); } } }
将此项目命名为“Ex1_1”,然后打开“命令提示符”程序,进入目录“D:\My Documents\Visual Studio 2010\Projects\Ex1_1\Ex1_1\bin\Debug”,输入 Ex1_1.exe 后回车,可以看到运行结果出现在控制台窗口中,显示“Hello World!”字样,如图1.26所示。
图1.26 控制台中程序运行结果
(1)命名空间
在上面代码中,以 using 关键词开始的是命名空间导入语句。命名空间是为了防止相同名字的不同标识符发生冲突而设计的隔离机制。比如用户开发了一个二维的图形组件,将该组件命名为 Point,而另一个用户开发的一个三维图形组件恰好也命名为 Point,这时,如果在应用程序中同时使用这两个组件,那么在编译时编译器将无法判断引用哪一个组件。通过将组件的命名放在不同的命名空间中就可以加以区别,要使用哪一个组件,通过 using 关键字打开其所在的命名空间即可。在C#中(确切地说是在.NET框架类库中)使用了一种树状的类似于“中国→江苏→南京”这样的地址编码方式来对命名空间进行管理,通过引入命名空间,就可以用MyClass.Point和 YourClass.Point 这样的方式对相同名称的标识符进行识别,即使是同时使用这两个组件,编译器也不会迷惑。
在.NET 框架类库中提供的不同组件都被包含在一定的命名空间中,所以要使用这些组件必须通过 using 关键字打开相应的命名空间使得相应的标识符对编译器可见,如果没有使用using关键字,那么相应的标识符就应包含完整的命名空间路径。
(2)完全面向对象
C#是一种面向对象语言,所以不会有独立于类的代码出现,应用程序的入口也必须是类的方法。C#规定以命名为“Main”的方法作为程序的入口。方法的代码使用“{}”符号作为起始标识符,“static”关键字是对方法的修饰,使得这个方法在类的实例被建立之前就可被调用,因为在程序入口的时候还不会有任何类的实例生成。“Main”前面的关键字“void”代表该方法没有返回值,这与C/C++和Java是一样的。
方法中的代码“Console.WriteLine("Hello World!");”是调用了.NET 框架类库中对象的方法来向控制台输出信息。可以看出,本程序的核心代码所实现的功能全部来自.NET 框架类库,而 C#只是提供了一个语法框架,C#开发实际就是用 C#语言将.NET 框架类库中的组件加以组织,实现应用程序的业务逻辑。
1.3.3 第一个Windows窗体程序
【例1.2】 显示含有“Hello World!”字样的对话框。
在图1.24 的【新建项目】对话框中,选择“Windows 窗体应用程序”模板,将此项目命名为“Ex1_2”,单击【确定】按钮后,将进入 C#的 Windows 编程窗体设计工作区,如图1.27所示。
图1.27 C# Windows窗体设计环境
工作区中央是窗体设计器,设计器窗口的标题是“Form1.cs [设计]”。
建立一个新的项目后,系统将自动建立一个窗体,其默认名称和标题为“Form1”。
在设计应用程序时,根据用户需要,从工具箱中选择所需要的控件,然后在窗体的工作区中画出相应的控件对象,这样就完成了窗体的界面设计。
将窗体“Form1”调整为合适的大小,从工具箱中选择“Button”按钮控件并将其拖曳到“Form1”窗体中,双击此按钮,在代码窗口中添加代码,代码如下:
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace Ex1_2 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { MessageBox.Show("Hello World!"); } } }
按“F5”快捷键运行此程序,结果如图1.28所示。
图1.28 Windows窗体程序运行结果
1.3.4 第一个Web应用程序
【例1.3】 在网页上显示“Hello World!”字样。
在图1.24的【新建项目】对话框中,选择“ASP.NET Web应用程序”模板,将此项目命名为“Ex1_3”,单击【确定】按钮后,进入C#的Web程序设计工作区。
ASP.NET 为每个页面提供了 3 种编辑视图:一种是设计视图,提供了可视化的“所见即所得”的开发环境;另一种是源视图,即源代码视图;还有一种是拆分视图,可同时看到设计视图和源视图。单击【设计】按钮进入设计视图模式,此时屏幕上会出现一个名为“我的ASP.NET应用程序”的页面,如图1.29所示。
图1.29 C# Web程序设计环境
从工具箱中选择控件并拖入页面中,如图1.30所示,这里只在页面上添加一个按钮(Button)和一个标签(Label),将页面中其余的无关标签文字全部删除。
图1.30 设计页面
在属性窗口中将Label的Text属性清空,双击Button按钮,系统自动打开代码编辑器,在事件代码中输入如下的程序代码:
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; namespace Ex1_3 { public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { } protected void Button1_Click(object sender, EventArgs e) { Label1.Text = "Hello World!"; } } }
右键单击项目中的 Default.aspx 网页文件,在弹出的快捷菜单中,选择【在浏览器中查看】选项即可运行这个Web程序,如图1.31所示。
图1.31 运行Web程序
系统会自动启动浏览器,在浏览器页面上单击【Button】按钮,将显示“HELLO WORLD!”字符,如图1.32所示。
图1.32 Web程序运行结果