第4课:类的设计

构造函数

构造函数间的调用 :this(参数列表)

public BankCustomer(string fn, string ln, double bal)
{
	this.firstName = fn;
	this.lastName  = ln;
	this.balance   = bal;
} 

public BankCustomer(string fn, string ln)  // start with 0.0 balance
	: this(fn, ln, 0.0)
{ }

属性
用于封装私有字段,(命名规则:一般是属性大写,字段小写)

索引器
用于封装私有数组:命名:public 返回值类型 this[int  索引变量]

using System;

namespace WindowsApplication2
{
private Person[] relatives;

public Person this [int index]
{
	get
	{
		return relatives[index];
	}
	set
	{
		if (value != null)
		{
			relatives [index] = value;
		}
	}
}
} 

代理/委托

分类:一般委托、多播委托 
委托是一个类,其定义和方法类似,定义如下

 public delegate double DelegateCompute(double x); 

声明一个委托实例引用,并初始化实例

DelegateCompute dc;
dc= new DelegateCompute(Form1.Low); //实例化一个Low方法的代理 

下面是用委托来调用方法

double result;
result = MoneyCompute.Compute(1000.0,dc); //返回值给result变量

多播委托

引用多个方法的委托,它连续调用多个方法
为了把委托的单个实例合并成一个多播委托,委托必须是同类型的,返回类型必须是void、不能带输出参数(可以带引用参数)
多播委托应用于事件模型中 

事件委托 

定义:

public delegate void NameListEventHandler(object source, WindowsApplication5.NameListEventArgs args); 

声明:

NameList names =new NameList(); //NameList类,内含nameListEvent事件委托实例的引用声明如下:
//public event NameListEventHandler nameListEvent;
names.nameListEvent += new NameListEventHandler(NewName); //初始化事件委托实例
names.nameListEvent += new NameListEventHandler(CurrentCount);
names.Add("MSDN");//调用方法Add,Add方法内含委托方法的调用
names.Add("Webcast");

调用:

//NameListEventArgs为派生于EventArgs的事件数据类
nameListEvent(this, new NameListEventArgs(name, list.Count));

事件 clone close&dispose XML

posted on 2011-07-03 14:23  jshchg  阅读(256)  评论(0编辑  收藏  举报

导航