C#单例模式

复制代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace _3._3._6_单例模式
{
    public class Singleton
    {
        private static Singleton s_instance;
        private int _state;
        private Singleton(int state) 
        { 
            _state = state;
        }
        public static Singleton Instance{
            get => s_instance ?? (s_instance = new Singleton(42));
        }
    }
}

这段代码是一个C#语言实现的单例模式示例。单例模式是一种常用的设计模式,用于确保一个类只有一个实例,并提供一个全局访问点。

概括性总结

  • 类定义:Singleton 类实现了单例模式。

  • 私有静态实例:private static Singleton s_instance用于存储类的唯一实例。

  • 私有构造函数:private Singleton(int state) 确保外部无法直接创建类的实例。

  • 公共静态属性:public static Singleton Instance 提供全局访问点,确保全局只有一个实例。

详细解析

  1. 命名空间:namespace _3._3._6_单例模式 定义了类的命名空间,用于组织代码。

  2. 类定义:

  • public class Singleton 定义了一个名为 Singleton 的公共类。
  1. 私有静态实例:
  • private static Singleton s_instance;

  • 这是一个静态成员,用于存储类的唯一实例。它是私有的,这意味着它只能在类内部被访问和修改。

  1. 私有构造函数
  • private Singleton(int state)

  • 这是一个私有构造函数,它接受一个整型参数 state。由于构造函数是私有的,因此外部代码无法直接创建 Singleton 类的实例。

  • 在构造函数内部,_state = state; 将传入的 state 值赋给 _state 成员变量。

  1. 公共静态属性:
  • public static Singleton Instance

  • 这是一个公共静态属性,用于提供对唯一实例的访问。

  • get => s_instance ?? (s_instance = new Singleton(42));

  • 这个属性使用了 C# 的空合并运算符 (??)。当 s_instance 为 null时,它会创建一个新的 Singleton实例,并将42作为状态传递给构造函数。如果s_instance` 已经存在,则直接返回该实例。

  • 这确保了无论多少次调用 Instance 属性,都只有一个 Singleton 实例。

相关推荐
Eiceblue39 分钟前
【免费.NET方案】CSV到PDF与DataTable的快速转换
开发语言·pdf·c#·.net
好奇的菜鸟1 小时前
如何在IntelliJ IDEA中设置数据库连接全局共享
java·数据库·intellij-idea
DuelCode2 小时前
Windows VMWare Centos Docker部署Springboot 应用实现文件上传返回文件http链接
java·spring boot·mysql·nginx·docker·centos·mybatis
优创学社22 小时前
基于springboot的社区生鲜团购系统
java·spring boot·后端
幽络源小助理2 小时前
SpringBoot基于Mysql的商业辅助决策系统设计与实现
java·vue.js·spring boot·后端·mysql·spring
猴哥源码2 小时前
基于Java+springboot 的车险理赔信息管理系统
java·spring boot
YuTaoShao3 小时前
【LeetCode 热题 100】48. 旋转图像——转置+水平翻转
java·算法·leetcode·职场和发展
Dcs3 小时前
超强推理不止“大”——手把手教你部署 Mistral Small 3.2 24B 大模型
java
东阳马生架构4 小时前
订单初版—1.分布式订单系统的简要设计文档
java
Code blocks4 小时前
使用Jenkins完成springboot项目快速更新
java·运维·spring boot·后端·jenkins