C#学习笔记之三(delegate, event, Make XML document )

类别:.NET开发 点击:0 评论:0 推荐:

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

本文地址:http://com.8s8s.com/it/it45101.htm