轻松使用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.ltesting.net

评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)