• 闲话静态构造函数


    这几天在学NHibernate 逛了一些网站,发现张老三的一些入门介绍很不错。看到一个网友转载他的文章
    http://philipsslg.cnblogs.com/articles/182149.html

    但是在里面看到一个比较怪的地方,引入的代码如下
    public class Sessions {
       
    private static readonly object lockObj = new object();
       
    private static ISessionFactory _factory;

       
    public static Sessions() {` }

       Public 
    static ISessionFactory Factory {
          
    get { 
             
    if ( _factory == null ) {
                
    lock ( lockObj ) {
                   
    if ( _factory == null ) {
                      Cfg.Configuration cfg 
    = new Cfg.Configuration ();
                      cfg.AddAssembly( Assembly.GetExecutingAssembly() );
                      _factory 
    = cfg.BuildSessionFactory(); 
                   }
                } 
    // end lock
             }
             
    return _factory;
          }
       } 
       
    public static ISession GetSession() {
          
    return Factory.OpenSession();
       }
    }


    上面的这句话 public static Sessions(){ } 看起来比较古怪。
    按照语义来说,静态的函数(这里是构造函数)不是提供给类本身调用吗?还加一个public的访问修饰符干吗(public的目的是可以提供给其他的类访问),不是自相矛盾吗?
     
    看了一些网友关于静态构造函数的描述
    构造函数分为两类:实例构造函数和静态构造函数。
    实例构造函数用来初始化特定的对象实例。
    静态构造函数也称类构造函数,在第一次使用类之前调用。

    静态构造函数自动被调用,不能被显式调用。虽然提供了许多约束条件,但是静态构造函数执行的确切时间和顺序是不确定的:
    一个类的静态构造函数在这个类的任何实例被创建前执行。
    一个类的静态构造函数在类的任何静态成员被引用前执行。
    一个类的静态构造函数在它的所有派生类的静态构造函数执行之后执行。
    一个类的静态构造函数从不会被执行一次以上。
  • 相关阅读:
    Java正则表达式的使用
    萤火虫小巷2(看完了)
    第七章--Java基础类库--与用户的互动
    Android界面编程--使用活动条(ActionBar)--通过ActionBar菜单改变TextView的字体和颜色
    电影:换肤(Replace)
    Android界面编程--使用活动条(ActionBar)
    萤火虫小巷1
    大三下半学期(3月4日定下的学习计划)
    12月17日问题
    JQuery 分页显示jquery-pager-1.0.js
  • 原文地址:https://www.cnblogs.com/Bruce_H21/p/382159.html
Copyright © 2020-2023  润新知