今天在做底层数据库操作时,又用到了静态类,所以,单拿出来再说说它

静态类相当于一个sealed abstract类,主要的一个优点是写在栈中,安全高速稳定,而且在执行的时候,十分优先。

类可以声明为 static 的,以指示它仅包含静态成员。不能使用 new 关键字创建静态类的实例。静态类在加载包含该类的程序或命名空间时由 .NET Framework 公共语言运行库 (CLR;特指:C#语言) 自动加载。

  它们仅包含静态成员

它们不能被实例化。

它们是密封的。

它们不能包含实例构造函数)。

因此创建静态类与创建仅包含静态成员和私有构造函数的类大致一样。私有构造函数阻止类被实例化

优点

使用静态类的优点在于,编译器能够执行检查以确保不致偶然地添加实例成员。编译器将保证不会创建此类的实例。

静态类是密封的,因此不可被继承。静态类不能包含构造函数,但仍可声明静态构造函数以分配初始值或设置某个静态状态。

注意

静态类不能有实例构造器。

静态类不能有任何实例成员。 静态类不能使用abstract或sealed修饰符。 静态类默认继承自System.Object根类,不能显式指定任何其他基类。

静态类不能指定任何接口实现。

静态类的成员不能有protected或protected internal访问保护修饰符。

看代码更清楚一些:

 public static class ReflectionFactory //类自动由CLR自动加载,安全高速稳定,它没有实例成员,不能被实例化
    {
 
        private static String datastr;
        static ReflectionFactory() //静态构造方法在应用程序开始时执行,且只执行一次
        {
            XmlDocument xmlDoc = new XmlDocument();
            xmlDoc.Load(@"f:/config/config.xml");
            XmlNode xmlNode = xmlDoc.ChildNodes[1];
            datastr = xmlNode.ChildNodes[0].ChildNodes[0].Value;
        }
        public static IData MakeSQL()
        {
            return Assembly.Load("Data").CreateInstance("Data." + datastr) as IData;
        }
 
    }
原文地址:https://www.cnblogs.com/lori/p/2081310.html