一、C#书写规范
Pascal大小写(标识符中每个单词首字母大写):类、方法、命名空间、属性和公共字段
Camel大小写(标识符中每个单词首字母大写,第一个单词除外):局部变量、形参
下划线加Camel大小写:私有字段和受保护的字段
以大写的I开始:接口名称
我认为养成良好的编程习惯,按照规范来书写是很有必要的,所以把书写规范列在了第一条。
二、类
对于所有的面向对象的语言,类都是很重要的主题。
程序的数据和功能被组织为逻辑上相关的数据项和函数的封装集合,并被称为类。
类是一个能储存数据并执行代码的数据结构。它包含数据成员和函数成员:
数据成员:字段、常量
函数成员:方法、属性、构造函数、析构函数、运算符、索引器、事件
关于类主要讲一下以下几个方面:
1、属性
刚接触C#的时候一直搞不清楚属性和字段有什么区别,觉得既然有了字段为何还要有属性。按我的理解,属性是一种方法,对字段进行了封装,以避免字段直接暴露给程序员使用。属性不具备存储能力,必须使用字段作为存储。通常做法是:
(1)将字段声明为private,将属性声明为public。
(2)采用相同的名称,不同的书写方法,如字段:_myValue,属性:MyValue。
之所以要有属性,是因为其具备计算能力和可设置为只读或只写。
假设我们需要一个不大于100的数值,为了避免客户输入数字的超出范围,我们需要过滤掉无效输入:
private int _theValue = 10;
int TheValue
{
set{_theValue = value>100?100:value;}//如果输入值大于100,则将_theValue设为100.
get{return _theValue;}
}
只有get访问器的属性称为只读属性,只有set访问器的属性称为只写属性:
int MyValue//只读属性
{
get{...}
}
int MyValue//只写属性
{
set{...}
}
每个属性都要被关联到后备字段,每次去声明字段会显得很繁琐,C#提供了自动实现属性,允许只声明属性而不声明后备字段:
Class C1
{
public int MyValue{get;set;}
}
2、方法
方法就是函数,有形参和实参,至于具体结构形式这里就不展开讲了,这里只讲一点,那就是可选参数。
C#允许可选参数,所谓可选参数就是我们可以在调用方法的时候包含这个参数,也可以省略它。
这个可选参数有什么用呢?这里举个例子说明。
假设我们要设计一个串口设置串口参数的方法:SPSet()
串口参数有:串口号、波特率、数据位、停止位、校验位
以上有五个参数,如果每次调用都要输入五个参数会显得很繁琐,而我们一般常需要设置的参数串口号和波特率,所以可以将后三个参数设置为可选参数,如下:
void SPSet(string portName,int baudRate,int dataBits = 8,int stopBits = 1,string parity = "None")
{...}
这样在调用SPSet()方法的时候,只需要传前两个参数就可以了,后面的参数可以省略。
3、访问修饰符
类和类的成员都有访问修饰符,在这里做一个总结:
类的可访问性有两个级别:public和internal。
标记为public的类可以被系统内任何程序集中的代码访问。
标记为internal的类只能被它自己所在的程序集内的类看到。
成员访问修饰符有:public、private、protected、internal、protected internal
private:只在类的内部可访问
internal:对该程序集类所有类可访问
protected:对所有继承该类的类可访问
protected internal:对所有继承该类的类或在该程序集内声明的类可访问
public:对任何类可访问