C#高级编程笔记(二)

枚举(enum)

用户定义的整数类型,声明时(使用enum关键字),要指定该枚举的实例可以包括的一组可以接受的值

使用枚举类型的优势:1.使代码更易于维护;2.使代码更清晰;3.使代码更易于输入。

用处:枚举在后台会实例化为派生于基类的、System.Enum的结构,即可以对其调用方法、执行任务。

另外枚举类型具有性能优势:.net framework在语法上将枚举当做结构(一旦代码编译好,枚举就成为基本类型),使用System.Enum静态方法可以重字符串中获取枚举值或者对象引用等。

命名空间(namespace)

提供了一种(逻辑组织)组织相关类和其他类的方式。不允许声明嵌套在另一个命名空间中的多个部分的命名空间

命名空间与程序集无关

using语句

1.可以在源代码文件顶部使用(仅仅是简化代码中对命名空间的引用,文件之间没有因此而建立物理链接,与#include不同)

2.给命名空间或者类指定别名(简化命名空间书写):考虑不希望命名空间名称出现在using指令中,避免与类名冲突

  eg:useing 别名 = 命名空间名;

3.在代码中使用

。。。

Main()方法

C#程序从Main()开始执行,Main()必须是类或者结构的静态方法,且其返回值必须是int或者void

对于多个Main()方法的程序在编译时应制定哪个作为应用程序的入口点(使用/main:所属类的全名)

传递参数---在程序调用时可以让CLR给Main()方法将命令行参数(一个字符串数组string[] args)作为参数传递

在程序运行要运行时给参数赋值(一般可以通过命令行执行 程序后面直接追加参数值)

 注释

源文件内部注释

 常用的注释:

单行注释 //。。。

多行注释/*....*/

XML文档

根据特定的注释(识别其中的XML标记)自动创建XML格式的文档说明

注释要求:

1.都为单行注释,且以///开头

2.可以包含XML标记

C#编译器将XML元素从特定的注释中提取出来生成一个XML文件(需要在编译时指定/doc参数,eg: csc /t:library  /doc:MyXML.xml  MyLibrary.cs )

T:类型,F:字段,M:成员

C#预处理器指令

作用:影响编译过程,不会转化为可执行代码中的命令

预处理器指令不用分号结束,一般一行只有一条指令,编译器处理完一条指令后,就会假定下一条指令在下一行上。

预处理器指令都以#开头

#define 与 #undef

#define mark   告诉编译器存在指定名称(这里是mark)的符号,类似于声明变量,但是这个变量没有真正的值,此变量不是实际代码的一部分,只在编译器编译代码时存在

#undef mark  删除符号(若符号不存在则该语句无效,若符号存在则删除该符号)

一般#define #undef 放在源文件开头位置,声明在编译任何对象的代码前。

#if #elif #else #endif

指定编译器是否要编译某个模块。条件编译(conditional compilation)实现的其中的一种方式

#if mark  //这里判断mark是否存在,即#define是否定义,#elif #else 语法类似

  //code //存在mark则编译这里

#endif

#if和#elif支持逻辑运算符(!、==、!=、||、&&)

eg:#if mark && (mark1 == false)  //这里判断mark存在且mark1不存在为true 

#warning 和 #error

编译器通过#warning和#error给用户显示警告或者错误信息(#。。。后的文本),并进行处理(#warning后会继续,#error后会退出)

eg: #warning  this is a  warning!

#region 和 #endregion

把一段代码标记为给定名称的一个块。

#line

改变编译器在警告和错误信息中显示的文件名和行号

#pragma

可以抑制或者还原指定的编译警告。(可以在类或者方法级别执行)

C#编程规则

标识符规则

1.必须以字母或者下划线开头,可以包含数字

2.不能使用关键字(若必须使用关键字 则可以使用@前缀

标识符可以使用unicode字符 语法 \uXXXX,XXXX为Unicode字符的4位16进制编码

用法约定

规则应是一个正确的决策,而不是一种束缚

1.命名约束

名称应直接反映对象的功能(一般不反映数据类型),且不与其他名称冲突。

  (1)大小写  

     命名空间、类、基类中的成员、常量等使用Pascal形式,最好不用下划线

     类中所有的私有成员字段使用camel(成员前缀用一条下划线)形式;传递给方法的参数都应使用camel形式;区分同名对象的---属性(Pascal)封装字段(camel);

私有成员总是使用camel形式,公有的或者受保护的使用Pascal形式

  (2)名称的风格应保持一致

  (3)名称的命名空间 <CompanyName>.<TechnologyName>

  (4)名称与关键字  

属性与方法的使用

属性:使用情况

1.客户端代码读取值,最好不用只写属性,可使用方法

2.读取值时间不应太长,否则使用方法

3.可按照任意顺序设置属性

4.读取值不应出现负效应

5.任意顺序读取属性效果应相同

字段的用法

字段总是私有的,某些情况下可以将常量或者只读字段设置为公有的

  于

2016年1月10日17:17:45

 

posted @ 2016-01-10 17:18  Zima  阅读(1956)  评论(0编辑  收藏  举报