.NET开发

本类阅读TOP10

·NHibernate快速指南(翻译)
·vs.net 2005中文版下载地址收藏
·【小技巧】一个判断session是否过期的小技巧
·VB/ASP 调用 SQL Server 的存储过程
·?dos下编译.net程序找不到csc.exe文件
·通过Web Services上传和下载文件
·学习笔记(补)《.NET框架程序设计(修订版)》--目录
·VB.NET实现DirectDraw9 (2) 动画
·VB.NET实现DirectDraw9 (1) 托管的DDraw
·建站框架规范书之——文件命名

分类导航
VC语言Delphi
VB语言ASP
PerlJava
Script数据库
其他语言游戏开发
文件格式网站制作
软件工程.NET开发
C#学习笔记之三(delegate, event, Make XML document )

作者:未知 来源:月光软件站 加入时间:2005-2-28 月光软件站

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




相关文章

相关软件