第一篇 C#2008入门必备
第1章 认识C#
本章首先介绍C#语言相关的基本知识,以使读者对C#有一个整体的认识。
C#是目前世界上最好的编程语言之一,其集中了几乎所有关于软件开发和软件工程研究领域的最新成果。C#拥有完全面向对象、类型安全、组件技术、版本控制、自动内存管理、跨平台异常处理,以及代码安全管理等先进特性。这些特性使它成为众多程序员和企业的首选开发语言。
本章将先介绍.NET运行框架及其与C#的关系,然后介绍C#开发平台Visual Studio 2008,最后通过实例说明该平台的基本使用方法。
本章主要内容:
● C#简介
● .NET框架及其与C#的关系
● C#开发工具Visual Studio 2008的使用
● C#基本程序编写方法介绍
1.1 什么是C#
C#是微软公司开发的一种面向对象编程语言,它是微软公司专门为.NET运行框架开发的高度集成和高度兼容的面向对象编程语言。C#强大的功能得益于强大的.NET运行框架。
1.1.1 Microsoft .NET框架
.NET框架(又可写作.NET Framework)是微软的XML Web服务平台,它不是一种语言。该服务平台致力于允许应用程序通过Internet实现数据通信和数据共享,而不必考虑操作系统、设备或编程语言的类型差异;它提供了用于创建各种应用程序的组件。利用.NET框架可用创建几乎所有的应用程序,包括Windows应用程序、Web应用程序和Web服务等。
目前支持.NET框架的语言除了C#之外,还有C++、Visual Basic、和JScript等。它们对应的.NET版本是Visual C++.NET、Visual Basic.NET和JScript.NET等。使用这些语言编写的程序都叫做.NET程序,这些程序调用.NET框架基础类库,运行于.NET框架中的公共语言运行库(Common Language Runtime)之上,正是公共语言运行库和.NET框架基础类库构成了.NET框架的基本内核。.NET框架原理图如图1-1所示。
公共语言运行库提供.NET程序的运行支持,它提供了所有.NET程序的运行环境,负责内存管理、安全性管理、简化应用程序部署。同时正是这个原因,使得公共语言运行库环境能够提供跨语言调试和调用。这种利用公共语言运行库运行的程序叫做托管程序,相应的不在公共语言运行库环境中运行的程序叫做非托管程序。利用C#语言编写的程序都是托管程序,可以用于编写非托管程序的有C、C++等。
图1-1 .NET框架原理图
.NET框架基础类库提供了编写.NET应用程序所需要的所有类、接口和类型,如数据库访问、网络通信、图形处理、密码术等。程序员用.NET语言调用的系统类、接口等就是.NET框架基础类库对应的类和接口。.NET框架基础类库运行于公共语言运行库之上。
1.1.2 .NET框架的开发语言——C#
C#是专门为适应.NET框架而设计的,它支持.NET框架基础类库提供的每种功能。C#是一种完全面向对象的编程语言。在C#中使用的所有基本类型都看做是对象,在程序中即使一个整型变量,也是当做对象来进行处理的。这与在C和C++中的情况是完全不同的。但是C#是从C和C++语言继承和发展而来,借鉴了包括Java、Delphi、Visual Basic等多种语言优点,如基本的流程控制语句、窗体设计思想、跨平台设计等。利用C#语言几乎可以完成C和C++语言能实现的所有功能,并且增强了程序的安全性。在C#中对指针的管理非常严格,只有在特别标识的代码块中才可以定义和使用指针,这样降低了内存溢出的风险,同时又兼顾了使用指针编写强大且高效、灵活的代码。
最后,C#的开发平台Visual Studio 2008为程序员提供了良好的程序编写、代码管理、调试和部署环境,大大提高了程序的开发效率。
1.1.3 C#的开发平台Visual Studio 2008
Visual Studio 2008(简称VS2008)是微软公司专门为开发.NET应用程序而设计的集成开发环境(IDE),它是目前最好的C#开发环境。
VS2008为程序员提供了高级代码编辑器、方便的窗体设计器、集成调试器和许多其他工具,为快速开发C#应用程序奠定了基础。
如果读者使用过Visual Studio 6.0或Delphi等开发工具,会发现VS2008的许多使用方法与它们相当类似。VS2008提供了强大的工具和开发组件,可以用来设计应用了多种资源的复杂的Windows窗体应用程序、Web应用程序及Web服务。那些在记事本中需要输入几十行代码才能完成的功能,在VS2008中只需要通过简单的拖放或双击鼠标便可完成。在对控件实施拖放操作时,VS2008将会自动显示所有的标记、属性和代码以实现所需功能。并且在更改控件、对象或变量名称后,VS2008会立即自动更新所有的关联名称,以达到与原名同步。VS2008同时为代码的输入提供了智能感应功能。一般情况下,只要输入代码的前一、两个字符,VS2008就会提示完整语法;如果输入错误,VS2008会立即提示错误代码,以便程序员及时纠错。并且这种智能感应的响应时间提高了至多10倍该平台还具有程序调试功能,包括代码调试、跟踪及即时窗口等。
1.2 第一个C#程序
本节将通过三个应用程序的实现介绍Visual Studio 2008开发环境及其使用。这些程序包括Windows Console应用程序、Windows Form应用程序和ASP.NET Web应用程序。本节将使读者对Visual Studio 2008开发环境有一个初步的了解。
1.2.1 认识和配置Visual Studio 2008开发环境
安装好VS2008之后,单击“开始”—“程序”—“所有程序”—“Microsoft Visual Studio 2008”菜单命令,便可以将其打开。
第一次打开时,VS2008要求进行默认环境设置,如图1-2所示。选中“Visual C# 开发设置”项,会自动将IDE布局成方便C#开发的环境和界面。也可以随时选择不同的开发设置。方法是单击“工具”—“导入和导出设置”菜单,然后选择“重置所有设置”选项。单击“下一步”按钮,根据提示便可完成设置。
图1-2 默认环境设置对话框
选择“Visual C#开发设置”选项,单击“启动Visual Studio”按钮,弹出如图1-3所示开发环境,起始页左上角是“最近的项目”,如果之前开发过一些项目,则该窗口中将会列出部分项目。窗体的右边是“解决方案资源管理器”和“属性”窗口。其中“解决方案资源管理器”中放置了当前打开项目的所有文件;“属性”窗口,用于显示项目中选定控件的属性。当前没有打开项目,所有两个窗口内容都是空白。下面将通过实例介绍利用VS2008创建项目。
图1-3 Microsoft Visual Studio 2008界面
说明:本书所有项目均通过VS2008创建。
1.2.2 第一个Windows Console程序
本书开始介绍的应用程序很多都是Windows Console程序,它们对学习C#编程非常重要。本节除介绍如何创建程序外,还会介绍程序创建时的一些环境。
1.2.3 创建Windows Console程序
按照下面的步骤可以很轻松地创建Windows Console程序。
(1)打开VS2008,单击“文件”—“新建”—“项目”命令,弹出“新建项目”对话框,如图1-4所示。
图1-4 新建项目对话框
(2)在“项目类型”栏里展开“Visual C#根目录”,并选定“Windows”;此时右边“模板”列表框中将显示“Visual Studio已安装模板列表”;选择其中的“控制台应用程序”,并在下边的“名称”输入框中为应用程序项目取名,如ConsoleTest(其默认名为Console Application1);然后在“位置”输入框中输入项目要存放的路径,本章的程序存放于D:\C#\ch1中,读者可以在随书附盘中的文件夹ch1中找到该程序。
(3)保持其他值为默认值单击“确定”按钮,进入工程的初始化阶段。
(4)完成初始化后,在程序主窗口中添加如下代码。
using System; using System.Collections.Generic; using System.Text; namespace ConsoleTest { class Program { static void Main(string[] args) { Console.WriteLine("This is my first C# Program"); //向控制台输出字符串 Console.WriteLine("I like C#"); //向控制台输出字符串 Console.ReadKey(); //获取用户的输入 } } }
(5)单击“调试”—“启动程序”菜单命令。
(6)程序进入调试编译状态,通过调试后便可以得到如图1-5所示的执行结果。
图1-5 程序执行结果
说明:控制台输出默认为白色,背景颜色默认为黑色。如果读者不习惯这种背景,可以用鼠标右键单击控制台的标题栏,在菜单中选择“属性”命令,弹出“属性”对话框,在该对话框中可以设置字体(包括颜色)、背景(包括颜色)和布局等属性。
(7)最后关闭窗口,退出当前程序。
这里主要说明平台的使用方法。首先,建立项目的方法不止如上所述的一种,上面是通过单击“文件”—“新建”—“项目”命令完成的;也可以在“起始页”的左上角“最近的项目”栏里的“创建”栏单击“项目”,如图1-6所示,系统同样会弹出“新建项目”对话框。当然,对于打开已有项目来说,如果“最近的项目”列表中没有要打开的项目,则可以在下面的“打开”一行中单击“项目”打开。最后,如果读者习惯使用快捷键,则可以按下Ctrl+Shift+N组合键,可以实现同样功能。
图1-6 创建项目
创建完程序之后,系统经过初始化,自动生成应用程序代码基本框架,包括基本的命名空间、类和函数名称(这些内容的解释将在第二篇讲到),如Main函数。程序员只需在相应类和函数里边添加功能代码。
添加完代码之后就要进行调试了。同样调试方式也不止上面介绍的一种,还可以通过单击工具栏上的启动调试按钮实现相同功能。一般它就在“调试”菜单的下方,是一个倒三角形图标。同时也可以使用快捷键Ctrl+F5来实现调试。当然,VS2008也有逐语句、逐过程、和断点设置、异常处理等调试功能。这些功能将在后面章节中详细介绍。
最后对代码做一点说明。程序中的主函数static void Main(string[] args)是程序的入口,其前两行代码用于在控制台显示字符;接下来一行Console.ReadKey()的作用是在控制台窗口中显示用户的键盘输入。之所以用在该程序中,是因为程序处于调试模式下运行时,它的控制台窗口会在显示完毕程序内容后,立即关闭。加上Console.ReadKey()后控制台窗口就会等待用户输入,而不会立即关闭。当然,为避免立即关闭控制台窗口,更简单的方法就是单击“调试”菜单中的“开始执行(不调试)”项。
下面将对VS2008中的“解决方案资源管理器”和“属性”窗口作简要介绍。
“解决方案资源管理器”窗口位于开发主窗口的右上角,如图1-7所示。
图1-7 “解决方案资源管理器”窗口
该窗口对整个解决方案中的项目进行管理,也就是说所建工程的所有项目文件都会包含在该窗口中。在该窗口中可以对其文件进行管理,如添加Windows窗体、添加组件、添加类、删除文件等。展开“Properties”,可以看到一个“AssemblyInfo.cs”文件,该文件中存放了程序集的常规信息,可以不予考虑。“引用”项中包含了当前工程中使用的所有.NET库,关于引用的使用将在后面介绍。最后一个文件“Program.cs”是编写代码的主文件,双击该文件可以看到前面编写的代码。
1.2.4 解决方案资源管理器
说明:使用C#编写的代码文件扩展名为.cs,是CSharp的英文缩写,也即是C#。
1.2.5 属性窗口
实际操作中,细心的读者可能会发现,当选中“解决方案资源管理器”中的子项(如Program.cs)时,窗口下方的“属性”窗口会有相应的文件属性列表,如图1-8所示。
图1-8 “属性”窗口
该窗口显示了选定对象的基本属性,包括“复制到输出目录”、“生成操作”、“完整路径”、“文件名”等。其中“复制到输出目录”表示是否将源文件复制到当前项目的bin\Debug目录下。它有三个选项,包括“不复制”、“始终复制”和“如果较新则复制”。“生成操作”将在后面章节中详细讲到。
接下来介绍本节的最后一个基本管理窗口——“类视图”窗口。如果没有显示该窗口,可以单击“视图”—“类视图”命令,弹出“类视图”窗口如图1-9所示。
图1-9 “类视图”窗口
类视图窗口通过类的组织关系来对其进行管理。它管理着整个项目所定义的所有方法、类、类成员及其层次关系。双击这些元素同样可以定位到其定义所在文件。
1.2.6 第一个Windows Form程序
Windows Form应用程序涉及很多知识点,如控件、事件、属性等。这里通过一个简单的问候对话程序,着重介绍建立Windows Form应用程序所用到的基本方法,其中包括创建时的几个小技巧。具体知识点将在后面章节深入讲解。
1.2.7 创建Windows Form程序
建立Windows Form应用程序步骤如下所示。
(1)打开VS2008,单击“文件”—“新建项目”命令,打开“新建项目”对话框,选择“模板”列表框中的“Windows窗体应用程序”选项,并将其名称改为FormsTest,如图1-10所示。
图1-10 “新建项目”对话框
(2)单击“确定”按钮,可以在设计窗口中得到如图1-11所示设计界面,这就是设计窗体。
图1-11 设计窗体
(3)找到“工具箱”栏,如果没有可单击“视图”命令,选择“工具箱”选项将其调出,如图1-12所示。
图1-12 工具箱
(4)在工具箱中找到Button控件,将其拖放到设计窗体中。向设计窗体中拖放两个Button控件,可以看到两个控件名分别为button1和button2。控件布局效果如图1-13所示。
图1-13 控件布局
(5)双击button1按钮和button2按钮,在Form1.cs中分别为其编写单击事件响应程序,核心代码如下所示。
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; namespace FormsTest { public partial class Form1 : Form { public Form1() { InitializeComponent(); //初始化控件 } private void button1_Click(object sender, EventArgs e) // button1的 // 单击事件 { MessageBox.Show("你单击了左边的button1按钮。"); //弹出消息框 } private void button2_Click(object sender, EventArgs e) // button2的 // 单击事件 { MessageBox.Show("你单击了右边的button2按钮。"); //弹出消息框 } } }
(6)运行应用程序,在窗体中单击button1按钮,得到如图1-14所示结果。当然,如果单击button2按钮,弹出对话框中的提示便是“你单击了右边的button2按钮。”,读者可以自行测试。
图1-14 程序运行效果图
上面便是建立Windows Form应用程序的基本步骤。虽然建立步骤比较多,但是它完成了相对于使用其他开发环境来说比较麻烦的功能。这一点也体现了VS2008的快速应用程序开发能力。
1.2.8 Windows Form程序创建技巧
下面将通过程序中用到的Button控件来介绍VS2008的一些使用技巧。
右键单击应用程序中的button1按钮。单击其中“察看代码”项可以直接进入控件的事件代码处;“置于顶层”和“置于底层”表示该控件与设计窗体Form1中其他控件的叠加关系;“锁定”控件用于将控件固定在设计窗体Form1上,不再移动;“选择Form1”表示将设计窗体Form1选定(以便窗口属性等); “剪切”、“复制”等命令功能与通常意义是一样的。下面重点介绍最后一项——“属性”。
单击“属性”命令,弹出“属性”窗口,如图1-15所示。
图1-15 “属性”对话框
“属性”对话框中列出了该控件的所有属性及其属性值(具体属性将在后面章节介绍),程序员可以在其中设置、更改属性值。不但如此,“属性”对话框中还包括了该控件的所有事件列表(如果该控件有事件),如单击事件、双击事件等。
最后简单介绍一下“错误列表”窗口和“输出”窗口,这两个窗口的信息对编程非常重要。
默认情况下,“错误列表”窗口和“输出”窗口都在整个开发环境的最下面。如果不能看到它们,可以在“视图”菜单中找到并调出它们。“错误列表”窗口实时显示程序员在编写代码过程中出现的语法错误,包括错误个数、警告个数、错误行、错误列等。“输出”窗口则有两个输出选项,它们是“调试”和“生成”选项,可以显示生成结果或调试结果信息。如图1-16所示为没有语法错误状态下,两个窗口输出结果。
图1-16 没有语法错误的输出结果
去掉了程序中的一个分号,则两个窗口的输出结果如图1-17所示。
图1-17 有语法错误的输出结果
可以看到,这两个窗口可以及时检查出代码编写过程中的各种错误,同时错误代码下面会出现一个红色的波浪线。这样便大大提高了程序的开发效率。
前面两节介绍的都是Windows应用程序的实例,接下来介绍一个关于ASP.NET的程序实例。
1.2.9 第一个ASP.NET程序
利用ASP.NET编写的程序通常由一个个的页面组成,即所谓的网页。ASP.NET应用程序不同于Windows应用程序。前面介绍的程序实例都是基于Windows的,而ASP.NET应用程序则是基于Web。它的运行离不开Web服务器的支持,通俗地讲这里的Web服务器就是Internet信息服务器(IIS)。如果计算机上没有安装IIS,也不必担心;因为在VS2008中,可以使用其内置的ASP.NET Development Server(ASP.NET开发服务器)作为Web服务器。
1.2.10 创建ASP.NET程序
为了方便介绍VS2008开发ASP.NET应用程序的基本流程,下面将以一个ASP.NET应用程序实例说明。具体步骤如下所示。
(1)打开VS2008,单击“文件”—“新建”—“网站”命令,弹出“新建网站”对话框,如图1-18所示。
图1-18 “新建网站”对话框
(2)选中“模板”列表框中的ASP.NET网站,创建一个具有.NET模板的空网站。如果没有安装IIS,应确保“位置”组合框中前一个下拉列表框显示为“文件系统”。在后一个列表框中输入完整存放路径及名称。其默认名为“WebSite1”,可以将其改为“FirstASPNET”。最后选择语言为“Visual C#”。
(3)完成设置之后单击“确定”按钮。系统开始初始化网站,最后得到如图1-19所示的界面。
图1-19 ASP.NET应用程序设计窗口
(4)在“解决方案资源管理器”中可以看到,系统自动建立了一个Default.aspx页面;并且给出了页面的HTML代码,如“源”视图中所示代码。对应下面的“源”视图按钮,其左边“拆分”按钮,用于拆分显示代码与实际显示效果。单击其最左边的“设计”视图按钮,即切换到所见即所得设计页面。在“工具箱”中依次拖放一个TextBox控件、一个Button按钮控件、一个Label按钮,放入“设计”页面中。在Button按钮的“属性”窗口中,设置其Text属性为“确定”。在Label标签的“属性”窗口中,设置其Text属性为空。最终效果如图1-20所示。
图1-20 控件的属性设置效果
(5)双击“确定”按钮,进入Default.aspx.cs页面。为其添加事件处理程序,整个文件代码如下所示。
using System; using System.Data; using System.Configuration; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) //当页面加载时发生 { } protected void Button1_Click(object sender, EventArgs e) //Button1 // 单击事件 { string s = "你输入了:"; //将Label1的Text属性设置为给定的字符串 this.Label1.Text = s+this.TextBox1.Text; } }
(6)单击“调试”—“开始执行(不调试)”命令,编译通过之后系统会打开IE浏览器。在输入框中输入一串字符串,如“你好,我的朋友!”,并单击“确定”按钮,运行效果如图1-21所示。
图1-21 ASP.NET应用程序运行结果
1.2.11 Web程序和Windows程序的区别
从ASP.NET应用程序的建立过程来看,其步骤和建立Windows应用程序非常相似。不同之处主要有如下几点。
(1)需要对站点“位置”设置站点使用服务器模式,如图1-22所示。分为“文件系统”、“HTTP”和“FTP”。在下拉列表中选择“文件系统”选项,则系统会建立一个临时的Web服务器。该服务器安全性较高,外部不能访问;如果要选择“HTTP”项,则要求计算机架设了Web服务器;“FTP”选项表示将文件存放到远程的目录,该模式适用于对已经存在的远程Web站点做修改。
图1-22 位置选项
(2)网站设计前和设计后的“设计”视图发生变化的同时,其“源”视图也发生了相应的变化。下面是设计完成后,“源”视图中Default.aspx的代码。
//Page指令,配置页面属性 <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %> <! DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3. org/TR/xhtml1/DTD/ xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > //HTML开始标记 <head runat="server"> //头的开始标记,定义头 <title>无标题页</title> //<title></title>之间设置网页 //标题名 </head> //头的结束标记 <body> //正文部分开始标记 <form id="form1" runat="server"> //<设置标单属性> <div> //定义区隔标记,容纳控件 //设置服务器端控件 <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox> <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="确定" /> <asp:Label ID="Label1" runat="server"></asp:Label> </div> //区隔标记结束 </form> //标单结束标记 </body> //正文结束标记 </html> //HTML结束标记
说明:ASP.NET采用了页面分离技术,真正实现了用户界面和逻辑界面的分离。上述文件Default.aspx便是用户界面设计结果。“<%”和“%>”之间是Page指令,定义了页面的编程语言和使用到的类等信息。接下来的代码主要定义了使用到的控件、控件位置、属性和事件等。如果不熟悉HTML语言,请参看第20章的相关介绍。
到此为止,已经介绍了三个具有代表性的应用程序。这些程序是本书内容的缩影,其中的很多具体的技术将在后面的章节逐步展开。
1.3 一个优秀的开发助手——MSDN
MSDN是MicroSoft Developer Network的缩写形式,是Microsoft提供的有关编程的最全面的信息资源。MSDN包含了上千兆字节信息,包括产品帮助说明、文档示例代码、技术文章等,可供全世界的开发人员使用。建议C#程序开发人员,在安装VS2008时,顺便将其安装。这样在开发过程中才可以使用VS2008的帮助,如“目录”、“搜索”、“索引”、“动态帮助”等功能。而且通过MSDN Library还可以实现联机帮助。MSDN的运行效果如图1-23所示。
图1-23 MSDN帮助界面
1.4 小结
本章首先介绍了.NET框架的体系结构,以及其与C#语言的关系;然后对C#语言的特点作了详细介绍,阐述了C#与其他语言的区别与联系;同时介绍了C#的开发工具VS2008的功能和使用。
最后,介绍了利用C#语言在VS2008上开发应用程序的基本方法,以及其涉及的操作技巧。这些程序包括Windows控制台应用程序、Windows窗体应用程序和ASP.NET应用程序。
下一章将介绍C#的语法基础,重点介绍其基本和常用的语法,这些对后面知识的学习和理解很重要。如果读者已经有足够的C#语法知识,可以跳过这一章。