zoukankan      html  css  js  c++  java
  • C# 单例和静态类

    单例与静态类的相同作用

    1.单例与静态类只能拥有一个实例,该实例在应用程序的整个周期中用于保持应用程序的全局状态。
    2.单例和静态类都可以实现线程安全。

    单例与静态类的区别?

    需要记住的是, 静态是属于C#中的一种语言功能, 而单例是一种设计模式。所以两者属于不同的领域。
    1.无法创建静态类的实例, 但是可以创建单个类的实例, 然后重用。
    2.编译器编译静态类, 在内部静态类视为抽象和密封类。
    3.单例的构造函数始终标记私有, 我们无法从单例类外部创建实例。
    4.静态类是在应用程序第一次加载进行初始化, 而单例加载可以懒加载也可以由CLR自动加载。
    5.静态类不能作为参数传递, 单例则可以作为参数传递。
    6.静态类不能集成接口
    7.单例的对象可以克隆, 静态类不行, 单例的对象可以释放,静态类不行。
    8.无法使用静态类实现依赖注入,因为静态类不是接口驱动。
    9.单例代表整个应用程序生命周期的单个对象, 属于应用程序级别, 而静态类没有任何对象指针, 属于应用域级别。

    单例和静态类的内存管理

    静态变量或者静态类不存储在堆栈的内存当中, 而堆栈的内从中存在一些称之为高频堆的特定控件, 其中存储静态类和静态变量。
    该空间超出了垃圾收集器的范围, 所以, 内存只有在响应的进程或者AppDomain结束时才会被释放。

    而单例类包含静态的应用, 所以垃圾回收器无法回收它, 并且仅仅在相应的进程或AppDomain结束时, 静态类和单例都会被销毁。

  • 相关阅读:
    谢尔宾斯基三角形,“混沌游戏”实现 20141022
    Who are you, What is the science
    The Tao to Excellent 2
    Mac Mini Server安装Centos6.5
    关于ftp的功能类——下载,上传,断点,连接
    mysql http://yaojialing.iteye.com/blog/773973
    序列号
    JS 文件复制
    java MySQLFront_Setup
    牛人博客
  • 原文地址:https://www.cnblogs.com/zh7791/p/13790518.html
Copyright © 2011-2022 走看看