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文件

