主页 > 编程资料 > C# >
发布时间:2015-09-26 作者:网络 阅读:202次
Delegates:
// 1. nomal delegates = create before run, in main
//declare
class Employee{}; class Couple{}

public delegate bool Reverse(object lhs, object rhs);
SetOrder(Reverse the DelegatedFunction) {}
//init
Couple.Reverse employeeByID = new Couple.Reverse(Employee.SecondIDLower)
Couple employees = new Couple(joe, fred);
employees.SetOrder(employeeByID);

// 2.static delegates = create it before run, static readonly
// it will oppcupy memory
class Employee {
public static readonly Couple.Reverse EmployByID =
new Couple.Reverse(Employee.SecondIDLower);
}
// call
employees.SetOrder(Employee.EmployByID);
// 3. delegates as propeties = create when use it
// save memory
class Employee {
public static Couple.Reverse EmployeeByID {
get {return new Couple.Reverse(Employee.SecondIDLower);}
}
}
// 4. Muticast Delegates
// must return void
public class DelegateClass {
public delegate void StringDelegate(string s);
public void Display(StringDelegate d, string s
{
d(s);
}
}
//declare
DelegateClass.StringDelegate Writer, Logger, Storer;
//init
Writer = new DelegateClass.StringDelegate(Employee.WriteString);
Logger = new DelegateClass.StringDelegate(Employee.LogString);
Storer = new DelegateClass.StringDelegate(Employee.StoreString);
...
public static void WriteString(string s) {}
DeletegateClass.StringDelegate mutiCast;
mutiCast = Writer + Logger;
mutiCase += Storer;
mutiCast -= Logger;
// call muticast delegates
theDelegateClass.Display(mutiCast, joe.ToString);


event:
//OfficeWatcher will subscrib Office's event
public class OfficeWatcher()
{
//subscriber Office event
public OfficeWatcher(Office)
{
office.OfficeChanged +=
new Office.OfficeChangedHandler(OnOfficeChanged);
}
//OnOfficeChanged will call when Office changed
public void OnOfficeChanged(object sender, Office EventArgs e) {}
}
//It will needed by NotifyOfficeChanged, hold data need to let
//subscribers know
public class OfficeEventArgs: EventArgs {}

public class Office {
//declare delegate, event will use it
public delegate void OfficeChangedHandler(object sender,
OffEventArgs e);
//declare event
public event OfficeChangedHandler OfficeChanged;
//This method will go through event OfficeChanged event and
//find who has subscribed this event, and let them know
protected virtual void NotifyOfficeChanged(OfficeEventArgs e){}
if (OfficeChanged != null) OfficeChanged(this, e);
}
...
public this[int index]
{
...
OfficeEventArgs e new OfficeEventArgs(ctr);
//Notify subscribers Office has changed
NotifyOfficeChanged(e);
}
}

XML Document:
1. generate XML comments in code using /// comments
2. 项目属性-->配置属性-->生成-->输出-->XML文档文件
3. ctrl+shift+B 生成项目, 这时生成xml文档
4. 工具-->生成注释web页,这时生成html文件


关键字词: