C#程序的布局组成

图2ˉ1展示了C#程序的一些基本特性。
图2ˉ1中的代码由MyApp类和Apparel类组成,其中,MyApp类包含了程序逻辑,Apparel类包含数据。这个程序创建了一个Apparel实例,并将其赋给myApparel。然后用这个对象将类成员FabType和Price的值输出到控制台。需要注意如下重要特性:
1.using语句指定了命名空间System。在第1章中提到过,.NET类库组织为多个命名空间,其中System命名空间包含所有简单数据类型。using语句就是在告诉编译器,处理引用时可以到该命名空间去搜索,而无需使用完全限定名。例如,可以引用label,而不用引用完全限定名System.Web.UI.WebControls.Label。

 
图2ˉ1 C#程序的基本元素


2.所有程序逻辑和数据必须包含在一个类型定义中。程序逻辑和数据都必须放在类、结构、枚举、接口或委托中。例如,不同于Visual Basic,C#没有存在于类型作用域之外的全局变量。对类型及类型成员的访问要受访问修饰符的严格限制。本例中,访问修饰符public允许外部类(如MyApp)访问Apparel类的两个成员。
3.每个可执行的C#应用都必须有一个Main()方法。Main()方法要作为应用的入口点。它必须有static修饰符,并且第一个字母M必须大写。以下重载的Main()方法定义了一个返回类型,并接受一个参数表作为输入。
返回一个整型值:
 

接收命令行实参列表作为参数,并返回一个整型值:
 

参数是一个字符串数组,其中包含调用程序所用的命令行。例如,下面的命令行会执行程序MyApparel,并传递两个参数值:
 
核心提示 命令行的内容会作为一个实参传递给Main()方法,由System.Environment.CommandLine属性也可以得到命令行内容。
C#编程的一般注意事项
区分大小写
所有变量和关键字都是区分大小写的。若将图2ˉ1中的class替换为Class,这段代码就不能通过编译了。
命名约定
ECMA标准提供了C#代码所要遵循的命名约定原则。通过遵循严格的命名策略,不仅可以增强程序的一致性,而且可以最大程度地减少通常因随意命名而导致的大小写错误。表2ˉ1对一些较为重要的建议做了一个总结。 
表2ˉ1 C#命名约定

类  型 大小写机制 注意事项及示例
Pascal  ● 使用名词或名词短语
● 尽量避免以字母I开头,因为这种命名是为接口保留的,接口都以字母I开头
● 不要使用下划线
常量 Pascal public const double GramToPound=454.0
枚举类型 Pascal  ● 枚举值名采用Pascal机制
● 枚举名使用单数
public enum WarmColor{Orange,Yellow,Brown}
事件 Pascal ● 事件处理方法应当有EventHandler后缀
● 事件参数类要有后缀EventArgs
异常 Pascal ● 有后缀Exception
接口 Pascal ● 有字母I作为前缀IDisposable
局部变量 Camel ● 有public修饰符的变量要采用Pascal机制int myIndex
方法 Pascal ● 用动词或动词短语来命名
命名空间 Pascal ● 命名空间和类不要同名
● 使用前缀来避免出现同名的命名空间
如,使用公司名对该公司开发的命名空间归类Acme.GraphicsLib
成员属性 Pascal  ● 使用名词或名词短语
参数 Camel ● 使用可以描述参数用途的有意义的名字
注意:名字的大小写可以基于如下两种机制:
1.Pascal。每个单词的首字母大写(如MyClassAdder)。
2.Camel。除第一个单词外,每个单词的首字母大写(如myClassAdder)。
对此有一个很好的经验:除了参数和局部变量外,其他的命名均遵循Pascal大小写机制。
对C#程序加注释
C#编译器支持三种类型的嵌入注释:XML注释、加双斜杠的单行注释(//)和多行注释(/ˇˇ/),大多数程序员应该对后面两种注释都很熟悉:
 
XML注释以三个斜杠开头,通常包含XML标记,用于说明代码的某个特定方面,如结构、类或类成员。C#解析器能展开XML标记来提供附加信息,并将其导出到一个外部文件以便进一步处理。
如图2ˉ1所示,标记用于描述一个类型(类)。C#编译器还可以识别另外8种与特定程序元素相关的主要标记,参见表2ˉ2,这些标记直接放在所指的代码行前面。 表2ˉ2 XML文档标记
标  记 说  明
开始和结束标记之间的文本给出了使用某个程序特性的示例
  cref属性包含异常名。
file属性设置为另外一个XML文件的文件名,该文件将包含在由此源代码生成的XML文档中
name属性包含参数名
  多数情况下设置如下:
///  
为类型提供中所没有的附加信息
开始和结束标记之间的文本描述会指出一个方法或属性会返回什么
  cref属性设置为一个相关类型、字段、方法或其他类型成员的名字
包含一个类描述,供VisualStudio.NET中的IntelliSense使用
使用XML注释的原因是,这些注释能导出到一个单独的XML文件中,然后可以使用标准XML解析技术来处理。默认情况下,编译器不生成XML文件,所以,如果想生成XML文件,则需要明确地告诉编译器。下面的命令会编译源代码consoleapp.cs,并创建XML文件consoleXML:
 
如果编译图2ˉ1中的代码,可以发现,编译器将对代码中的所有public成员生成警告信息:
 
要想不再出现该警告信息,为编译命令添加/nowarn:1591选项即可。这个选项可以接受多个警告码(各警告码用逗号分隔)。
核心提示 有许多文档工具可以转换和扩展C#XML文档输出。其中最高级的文档工具之一是NDoc(ndoc.sourceforge.net),这是一个开源工具,不仅可以生成XML文档,而且可以使用反射进一步收集程序集的信息。

posted @ 2009-02-06 09:35  Andy-阿杰  阅读(548)  评论(0)    收藏  举报