2.1 C#程序设计
程序是用户用来指挥计算机进行特定操作,使计算机完成指定任务的指令序列。在进行程序开发前,需要了解一些基本知识。本节以第1章介绍的控制台应用程序为例,讲解C#程序的组成要素和基本语法格式。
2.1.1 C#程序的组成要素
在第1章最后一节介绍了控制台应用程序的创建过程,并实现了在屏幕上输出“HelloWorld”的功能。本节将对该程序进行分析,请看HelloWorld范例项目。
范例2.1
HelloWorld.sln
HelloWorld.sln在这里我们演示了在Visual Studio中创建的控制台应用程序的运行效果,本程序将在控制台中输出“HelloWorld”。
(光盘\code\ch2\ HelloWorld \ HelloWorld.sln)
1 using System; //默认使用的命名空间 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 namespace HelloWorld //自己定义的命名空间“HelloWorld” 6{ 7 class Program //默认生成的类Program 8 { 9 static void Main(string[]args) //主方法 10 { 11 Console.WriteLine("HelloWorld"); 12 Console.Read(); //等待用户输入 13 } 14 } 15 }
此程序的作用是在屏幕上输出“HelloWorld”,当用户按下Enter键时程序结束。该程序非常简单,但是包含C#的基本组成要素:关键字、命名空间、类和方法、语句和分号、大括号。
1. 关键字
在代码中默认字体为蓝色的using、namespace、class、static、void、string为C#语言中的关键字。关键字也叫保留字,是对C#有特定意义的字符串。
2. 命名空间
命名空间实质上是一个集合,一个类和实例的集合,是为了更好地管理这些类和实例而定义的一个集合。本程序的前4行是以using开头的语句,说明本程序可以使用这些命名空间中的类。在创建控制台应用程序时,系统自动导入这4个命名空间,并且放在程序代码的起始处。在本程序中只用到System命名空间,该命名空间是Visual Studio 2008中最基本的命名空间。
在很多程序中多需要添加其他命名空间,只需要在文件开头使用using语句加命名空间名即可。
3. 类和方法
在本程序中出现的Program是类名。C#是完全面向对象的,每个应用都必须包含类。在该类中声明了一个Main()方法,该方法是应用程序的入口。C#要求每个程序必须有且只有一个Main()方法。
4. 语句和分号
程序中出现的分号(“;”,英文状态下输入的)是C#应用程序中执行操作的指令。C#中的语句必须用分号“;”结束。可以在一行中书写多条语句,也可以将一条语句书写在多行上。
5. 大括号
程序中的大括号“{”和“}”是一种范围标志,是组织代码的一种方式,用于标识应用程序中逻辑上有紧密联系的一段代码的开始与结束。大括号可以嵌套,以表示应用程序中的不同层次。
这里只是简单指出一个C#程序的组成要素,在后面的章节中将会详细介绍每一部分的具体作用。
2.1.2 C#程序的格式
在代码编写过程中,养成良好的习惯,可以做到事半功倍。在编程中代码按照一定的格式书写可以使代码层次清晰,从而提高程序的可读性,为团队开发减少麻烦。
1. 命名规范
C#是区分大小写的。例如,定义变量Name与name,对于C#来说是不同的变量。在C#中,类名、方法名使用Pascal大小写形式,如2.1.1节程序的Program类中所示,第一个字母大写,其他字母小写。变量和方法参数使用Camel大小写形式。
作者心得:
Pascal大小写形式:所有单词第一个字母大写,其他字母小写。Camel大小写形式:除了第一个单词,所有单词第一个字母大写,其他字母小写。命名空间需按照标准的模式命名,文件名要和类名匹配。例如,对于类HelloWorld,相应的文件名应为helloworld.cs。
2. 缩进和间隔
在程序设计中,用统一的缩进格式可以清晰地表示程序的结构层次。例如2.1.1节的HelloWorld程序,命名空间的大括号作为最外层,顶格书写。类的大括号向里缩进一个制表位,类内部的方法和成员变量依次向里缩进。缩进使用Tab键,不用空格。缩进用于表示代码的结构层次,在程序中并非必需,但缩进可以清晰地表示程序的结构层次。在程序设计中,应该使用统一的缩进格式书写代码。
3. 良好的编程习惯
避免使用大文件。如果一个文件里的代码太长,必须考虑将代码分开到不同类中。如果一个方法代码行超过25行,应该考虑将其分解为不同的方法。为方法命名,最好做到见名知意。一个方法只完成一个任务。不要把多个任务组合到一个方法中,即使那些任务非常小。
关于变量的使用,最好不要几个方法用相同的变量,这样可能会造成混乱。例如,不容易确定该变量值什么时候发生了改变。如果在程序中使用固定值,例如圆周率,这时尽量使用常量代替。
4. 注释
代码的注释对代码起到解释说明的作用。在适当的位置进行注释,可增强代码的可读性,有利于阅读和维护,使不同开发者更快地理解代码。在编译运行程序时,将跳过程序的注释部分。C#中有两种基本注释,一是单行注释,二是多行注释。单行注释以双斜线“//”开始,不能换行。例如2.1.1节的注释,就是单行注释。多行注释以“/*”开始,以“*/”结束,可以换行。例如下面的注释就是多行注释。
/*
[修改标识]
[修改原因]
Visual C# 2008
多行注释
*/
注意,这种多行注释又叫做类注释,一般用于不在使用的代码和临时测试屏蔽某些代码。这种方式的注释不允许嵌套。除此之外,C#还有一种特殊的注释方法,即用“///”注释后面的语句。请看使用该注释的程序代码:
1 ///<summary> 2 ///HelloWorld类 3 ///</summary> 4 public class HelloWorld 5 { 6 ///<summary> 7 /// 控制台应用程序入口 8 ///</summary> 9 public static int Main(string[]args) 10 { 11 Console.WriteLine("HelloWorld"); //在屏幕上输出HelloWorld 12 Console.Read(); //从标准输入流读取下一行字符,即等待用户输入 13 } 14 }
程序中的第一个注释是对下面的HelloWorld类说明,第二个注释是对主方法Main的说明。这种方式的注释可以为代码创建文档。