在编写一个类的时候,如果类中有静态成员,那么最好的方法就是在类被实例化前被初始化,有个简单的方法,如:
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第一次被使用时才被赋值.之后再使用就不必再赋值。
分享到:
相关推荐
本文实例讲述了C#静态构造函数用法。分享给大家供大家参考。具体如下: 当我们想初始化一些静态变量的时候,就需要用到静态构造函数了。这个静态构造函数属于类,而不属于实例,就是说这个构造函数只会被执行一次,...
本篇文章主要是对C#中静态构造函数的几点说明进行了介绍,需要的朋友可以过来参考下,希望对大家有所帮助
当我们想初始化一些静态变量的时候,需要用到静态构造函数了。这个静态构造函数属于类,而不属于实例,是说这个构造函数只会被执行一次,即:在创建第一个实例或引用任何静态成员之前,由.NET自动调用。 现在碰到...
主要介绍了浅析C#静态类,静态构造函数,静态变量 的相关资料,非常不错具有参考借鉴价值,需要的朋友可以参考下
描述继承中子类与父类构造函数,静态块的执行顺序
主要介绍了C#中的私有构造函数和静态构造函数,是C#入门学习中的基础知识,需要的朋友可以参考下
今天花了一些时间把静态构造函数的用法总结了一下,希望高手们指点。谢谢
C# MVC默认的实例化控制器时是调用不带参数的构造函数,但是使用castle注入进行构造注入构造函数带参。
namespace ConsoleApplication1{ /// /// 作者:it小金 /// 功能:c#只读字段和常量的区别,以及静态构造函数的使用 /// class Program { static void Main(string[] args) { Console.WriteLi
构建一个类Point,它提供两个公有的构造函数,一个没有参数的Point构造函数和一个有两个double参数的构造函数。另外在该类中提供一个静态方法计算两个点的直线距离,传入参数为两个Point类实例。然后设计一个测试类...
模拟新闻NStatics 如何将Mockito与构造函数和静态函数一起使用的示例
搭建iis网站,通过webservice指定网址,即可通过调用webservice访问数据库。
构造函数、析构函数 构造函数: 1.若没提供任何构造函数,则系统会自动提供一个默认的构造函数,初始化所有成员为默认值(引用类型为空引用null,值类型为0...静态构造函数: 1.只能定义一个,最多运行一次,仅在第一次
3 构造函数,(创建对象时执行完2后再执行构造函数,不管构造函数是public还是private) */ public class Test{ public Test(){ System.out.println("类Test构造方法被执行 6"); } { System.out.println("类...
(3)类的静态构造函数在给定应用程序域中至多执行一次:只有创建类的实例或者引用类的任何静态成员才激发静态构造函数 (4)静态构造函数是不可继承的,而且不能被直接调用。 (5)如果类中包含用来开始执行的...