当前位置: 首页 > news >正文

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 的公共类。

3. 私有静态实例:
- private static Singleton s_instance;
- 这是一个静态成员,用于存储类的唯一实例。它是私有的,这意味着它只能在类内部被访问和修改。

4. 私有构造函数
- private Singleton(int state)
- 这是一个私有构造函数,它接受一个整型参数 state。由于构造函数是私有的,因此外部代码无法直接创建 Singleton 类的实例。
- 在构造函数内部,_state = state; 将传入的 state 值赋给 _state 成员变量。

5. 公共静态属性:
- public static Singleton Instance
- 这是一个公共静态属性,用于提供对唯一实例的访问。
- get => s_instance ?? (s_instance = new Singleton(42));
- 这个属性使用了 C# 的空合并运算符 (??)。当 s_instance 为 null时,它会创建一个新的 Singleton实例,并将42作为状态传递给构造函数。如果s_instance` 已经存在,则直接返回该实例。
- 这确保了无论多少次调用 Instance 属性,都只有一个 Singleton 实例。
 

http://www.lryc.cn/news/429388.html

相关文章:

  • 10-使用sentinel流控
  • redis AOF机制
  • Day 21代码|随想录| 二叉树完结撒花,今日刷题669.修剪二叉搜索树、108.将有序数组转换为二叉搜索树、538.吧二叉搜索树转换为累加树
  • cmake教程一
  • 3D场景标注标签信息,three.js CSS 2D渲染器CSS2DRenderer、CSS 3D渲染器CSS3DRenderer(结合react)
  • C++参悟-单例模式
  • 【题解】—— LeetCode一周小结32
  • 详解线索分层的目的、维度与创新实践
  • 于8月21号的回顾
  • Abstract Class抽象类
  • webrtc ns 降噪之粉红噪声参数推导
  • IO进程线程8月21日
  • Web安全:SqlMap工具
  • 用手机写一本电子书
  • 【网络编程】基于UDP的TFTP文件传输
  • Vue 3 + Pinia 实现网页刷新功能
  • DVWA综合靶场漏洞讲解
  • 实现Bezier样条曲线
  • MySQL中的EXPLAIN的详解
  • LearnOpenGL——SSAO学习笔记
  • [C语言]-基础知识点梳理-文件管理
  • pcdn闲置带宽被动收入必看教程。第五讲:光猫更换和基础设置
  • 工业数据采集网关简介-天拓四方
  • Java 调整字符串,验证码生成
  • 【专题】全球商用服务机器人市场研究(2023)报告合集PDF分享(附原数据表)
  • SQL UA注入 (injection 第十八关)
  • 初阶数据结构之计数排序
  • 【开端】记一次诡异的接口排查过程
  • jenkins最佳实践(二):Pipeline流水线部署springCloud微服务项目
  • 第2章 C语言基础知识