輕松使用C++深入研究.NET委托與事件設計[1]

發表于:2007-05-14來源:作者:點擊數: 標簽:深入研究C++.NET委托輕松
簡介 類型 安全 機制的實現原來采用的是C風格的回調(callback)函數,而 .NET Framework引入了委托和事件來替代原來的方式;它們被廣泛地使用。我們在這里嘗試使用 標準 C++ 來實現與之類似的功能,這樣我們不但可以對這些概念有一個更好的認識,而且同時還能

  簡介

  類型安全機制的實現原來采用的是C風格的回調(callback)函數,而 .NET Framework引入了委托和事件來替代原來的方式;它們被廣泛地使用。我們在這里嘗試使用 標準 C++來實現與之類似的功能,這樣我們不但可以對這些概念有一個更好的認識,而且同時還能夠體驗C++的一些有趣的技術。

 
  美女啦啦隊招募中   縱情享受人生第一樂趣  
 新浪招商引資征代理商   上網實用手冊 
 
 
   C#中的委托與事件關鍵字

  首先我們來看一個簡單的C#程序(下面的代碼略有刪節)。執行程序的輸出結果如下顯示:

  SimpleDelegateFunction called from Ob1,

  string=Event fired!

  Event fired!(Ob1): 3:49:46 PM on

  Friday, May 10, 2002

  Event fired!(Ob1): 1056318417

  SimpleDelegateFunction called from Ob2,

  string=Event fired!

  Event fired!(Ob2): 3:49:46 PM on

  Friday, May 10, 2002

  Event fired!(Ob2): 1056318417

  所有這些都源于這樣一行代碼:dae.FirePrintString("Event fired!");

  在利用C++來實現這些功能時,我模仿了C#的語法并完全按照功能的要求進行開發。

  namespace DelegatesAndEvents

  {

  class DelegatesAndEvents

  {

  public delegate void PrintString(string s);

  public event PrintString MyPrintString;

  public void FirePrintString(string s)

  {

  if (MyPrintString != null)MyPrintString(s);

  }

  }

  class TestDelegatesAndEvents

  {

  [STAThread]

  static void Main(string[] args)

  {

  DelegatesAndEvents dae =new DelegatesAndEvents();

  MyDelegates d = new MyDelegates();

  d.Name = "Ob1";

  dae.MyPrintString +=new DelegatesAndEvents.PrintString(d.SimpleDelegateFunction);

  // ... more code similar to the

  // above few lines ...

  dae.FirePrintString("Event fired!");

  }

  }

  class MyDelegates

  {

  // ... "Name" property omitted...

  public void SimpleDelegateFunction(string s)

  {

  Console.WriteLine("SimpleDelegateFunction called from {0}, string={1}", m_name, s);

  }

  // ... more methods ...

  }

  }

原文轉自:http://www.anti-gravitydesign.com

評論列表(網友評論僅供網友表達個人看法,并不表明本站同意其觀點或證實其描述)
国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97