C#的4个基本技巧

发表于:2010-9-19 10:21

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:未知    来源:51Testing软件测试网采编

分享:

  3. 在Producer/Consumer 的Idiom中使用Delegate 

  当你生成一个实现producer idiom类的时候,使用deletate来通知consumer。这种方法相对于用接口更加灵活。Delegate是多点传送的,所以不用加额外的代码你就何以支持多用户。相对于用接口这样做可使类之间的耦合性降低。 

  下面的类处理键盘输入并把它传给所有的registered listeners: 

public class KeyboardProcessor  
{  
private OnGetLine theFunc = null; 

public OnGetLine OnGetLineCallback {  
 get   {  
  return theFunc;  
 }  
 set   {  
  theFunc = value;  
 }  

public void Run (){  
string s;  
do{  
 s = Console.ReadLine();  
 if (s.Length == 0)  
  break;  
 if (theFunc != null){  
  System.Delegate[] funcs = theFunc.GetInvocationList();  
  foreach(OnGetLine f in funcs){  
   try{  
    f(s);  
   }catch(Exception e){  
    Console.WriteLine  
    ( "Caught   Exception:   {0} ",   e.Message);  
   }  
  }  
 }  
}   while   (true);  
}

  任何数目的listeners都可注册到producer,它们所要做的只是提供一个特定的函数:deletate。

  4. 注意初始化顺序

  C#中对于一些变量声明加入了initializer的概念。它们在构造函数之前被执行,实际上变量在基类的构造函数执行前之前被初始化。

  所以,在初始化变量的时候不要用基类中的数据,因为它们还没有被构造。

22/2<12
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号