程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> .NET 委托

.NET 委托

編輯:C#入門知識

    委托類型定義
 




  • 委托類型實例
    何時使用委托而不使用接口
  • 在以下情況中使用委托
  • 在以下情況中使用接口
  • 聲明委托
   ProcessBookDelegate(Book book);
  • 實例化委托
















  • 調用委托











  • 多路廣播委托
 
  Del( s);
 TestClass
{
      Hello( s)
    {
        System.Console.WriteLine(, s);
    }
      Goodbye( s)
    {
        System.Console.WriteLine(, s);
    }
      Main()
    {
        Del a, b, c, d;
        a = Hello;
        b = Goodbye;
        c = a + b;
        d = c - a;
        System.Console.WriteLine();
        a();
        System.Console.WriteLine();
        b();
        System.Console.WriteLine();
        c();
        System.Console.WriteLine();
        d();
    }
}
    匿名方法
 
(System.Object o, System.EventArgs e)
                   { System.Windows.Forms.MessageBox.Show(); };

  Del( x);
Del d = ( k) {  };

 StartThread()
{
    System.Threading.Thread t1 =  System.Threading.Thread
      (()
            {
                System.Console.Write();
                System.Console.WriteLine();
            });
    t1.Start();
}

  • 委托中的協變和逆變
 Mammals{}
 Dogs : Mammals{}
 Program
{
      Mammals HandlerMethod();
      Mammals FirstHandler(){ ;}
      Dogs SecondHandler(){ ;}
      Main()
    {
        HandlerMethod handler1 = FirstHandler;
        HandlerMethod handler2 = SecondHandler;
    }
}
 Form1()
{
    InitializeComponent();
    lastActivity =  System.DateTime();
    .textBox1.KeyDown += .MultiHandler; 
    .button1.MouseClick += .MultiHandler; 
}
  MultiHandler( sender, System.EventArgs e)
{
    lastActivity = System.DateTime.Now;
}
  • 泛型委托
   Del<T>(T item);
   Notify( i) { }
Del<> m1 =  Del<>(Notify);
  • 方法組轉換
> m2 = Notify;
  • 泛型類內部定義委托使用泛型類類型參數
 Stack<T>
{
    T[] items;
     index;
       StackDelegate(T[] items);
}
  • 引用委托的代碼必須指定包含類的類型變量
   DoWork([] items) { }
   TestStack()
{
    Stack<> s =  Stack<>();
    Stack<>.StackDelegate d = DoWork;
}
  • 泛型委托取代傳統裝箱拆箱委托
  StackEventHandler<T, U>(T sender, U eventArgs);
 Stack<T>
{
      StackEventArgs : System.EventArgs { }
      StackEventHandler<Stack<T>, StackEventArgs> stackEvent;
       OnStackChanged(StackEventArgs a)
    {
        stackEvent(, a);
    }
}
 SampleClass
{
      HandleStackChange<T>(Stack<T> stack, Stack<T>.StackEventArgs args) { }
}
   Test()
{
    Stack<> s =  Stack<>();
    SampleClass o =  SampleClass();
    s.stackEvent += o.HandleStackChange;
}

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved