说到封装,其实是比较基础类的问题,它为程序设计提供了系统与系统,模块与模块,类与类之间交互的实现手段。在.Net中,一切看起来都已经被包装在.Net FrameWork这一复杂的网络中,提供给最终开发人员的是成千上万的类型,方法和接口,而Framework内部一切已经做好了封装。
作为一个初级GIS程序员,关于封装那些宏观的概念暂且不提,编程经常面对的就是“字段,属性,方法”,这也是面向对象的基本概念之一。
1.字段
通常定义为private,表示类的状态信息。CLR支持只读和读写字段。只读字段只能在构造函数中被赋值,其他方法不能改变只读字段。常见的字段定义:
private string name;
private int age;
2.属性
通常定义为public,表示类的对外成员。属性具有可读,可写,通过get和set访问器来实现其读写控制。如果属性为只读,则只实现get访问器即可;如果属性为可写,则实现set访问器即可。另外还有一种含参属性,在c#中称为索引器。索引器允许您按照与数组相同的方式对类、结构或接口进行索引。上边的字段我们就可以封装为属性。
private string name;
public string Name
{
get{return name;}
set
{
name=value==null?String.Empty:value;//name??String.Empty(左侧为null,则返回右侧操作数值,不为null则返回左侧操作数值)}
}
其实这在VS2010里直接都是智能化的,选中字段→选择重构→封装字段,这样就OK了。
3.方法
方法封装了类的行为,提供了类的对外表现。用于将封装的内部细节以公有方法提供对外接口,对外交互的方法通常实现为public。但是在类内部的操作基本上以private方式来实现,保证了对内部数据的隐藏与保护。在VS2010里也可以选中代码段→选择重构→提取方法。