程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> C#學習筆記之三(delegate, event, Make XML document )
C#學習筆記之三(delegate, event, Make XML document )
編輯:關於C語言
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文件