• C# 单例和静态类


    单例与静态类的相同作用

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

    单例与静态类的区别?

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

    单例和静态类的内存管理

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

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

  • 相关阅读:
    LeetCode1051. 高度检查器 Java
    LeetCode 面试题 16.04. 井字游戏 Java
    WPF 显示3D密集场景,堆场管理系统
    WPF 饼状图,柱形图,折线图 (3 饼状图)
    WPF 饼状图,柱形图,折线图 (2 折线图)
    WPF 饼状图,柱形图,折线图 (1 柱形图)
    wpf 实现控件拖拽(仿windows 桌面图标拖拽)
    设计模式-控制反转
    Socket 网络编程和IO模型
    wpf 滚动文字 跑马灯
  • 原文地址:https://www.cnblogs.com/zh7791/p/13790518.html
Copyright © 2020-2023  润新知