静态构造函数

在编写一个类的时候,如果类中有静态成员,那么最好的方法就是在类被实例化前被初始化,有个简单的方法,如:
public class MyClass{
     private static string _name = "MyClass";
     //other fields..
}
还有中方法:
public class MyClass{
 private static string _name;
 static MyClass(){
  this._name = "MyClass";
 }
}
注意:static MyClass也是一中构造方法,常叫做静态构造方法,该方法内只能访问类中静态成员,因此下面的操作是错误的
public class MyClass{
 private static string _name;
 private Provider _provider;
 static MyClass(){
  this._name = "MyClass";
  this._provider = new Provider(); //error
 }

延迟加载:
所谓延迟加载就是在需要使用的时候加载,而不是构造时就加载好,根据它的原理可以很显然的看出它的一些使用的场合在一个类A中,如果其组合了另一个更大的类B,而这个类B很有可能在类A的生命周期中不被使用,那么类A加载类B就没什么意义了,但类A是有可能用到类B的,只是机会不多而以。例如:

//B 是个很大的类
public class B{
 private BigType _bigtype;
 // other a lot of fields  
}

public class A{
 private int _a;
 private B _b;
 public A(){
  this._a = -1;
  this._b = new B();
 }
 public int a{ 
  get{ return this._a; } 
 }
 //很少被使用
 public B b{
  get{ return this._b; }
 }
}
在类A被实例化时,A a = new A();_b就不初始化,但是之后就再没用到过_b了,更好的方法:
public class class A{
 private int _a;
 private B _b;
 public A(){
  this._a = -1;
 }

 public int a{ 
  get{ return this._a; } 
 }

 public B b{
  get{
   if(this._b == null)
    this._b = new B()'
   return this._b;
  }
 }
}
这样一来,只有在_b第一次被使用时才被赋值.之后再使用就不必再赋值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值