Grisson's .net

源码之前,了无秘密

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
由于C#不知参数的默认值,but constructor initializers allow one constructor to call another construcor.
所以经常出现一下这种形式的代码:
public class MyClass
{
  
private ArrayList _col;
  
private string _name;
  
  
public MyClass():this(0,"")
  

  }


  
public MyClass(int initialcount):this(initialcount,"")
  
{
  }


  
public MyClass(int initialcount,string name)
  
{
   
//编译器只有在这里添加初始化语句
   if(initalcount > 0)
      _col 
= new ArrayList(initialcount);
   
else
      _col 
= new ArrayList();
   _name 
= name;
  }

}
以上形式的代码完全ok!!但是一下形式的代码会降低程序的性能,因为the compiler adds codes to perform several functions on you behalf in constructors.It add statements for all variable initializers.
public class MyClass
{
  
private ArratList _col;
  
private string _name;
  
  
public MyClass()
  
{
    
//编译器会自动添加额外的初始语句
    commonConstructor(0,"");
  }


  
public MyClass(int initial)
  
{
    
//编译器会自动添加额外的初始语句
    commonConstrutor(initial,"");
  }


  
public void commonConstrucot(int initial,string name)
  
{
    
//编译器会自动添加额外的初始语句
    
//处理代码
  }

}
posted on 2005-08-12 19:42  海盗  阅读(282)  评论(0编辑  收藏  举报