C#演示单例模式

单例模式的特点:
确保一个类只有一个实例,并提供一个全局访问点。

 //单例模式的实现internal class Boss{//定义静态变量保存实例private static Boss uniqueBoss;//定义锁,确保线程访问安全private static readonly object _lock = new object();//定义私有构造函数,使外界不能创建该类实例private Boss(){}//定义公有方法提供一个全局访问点,public static Boss GetBoss(){//关键代码加锁lock (_lock){//如果类的实例不存在则创建,否则直接返回if (uniqueBoss == null){uniqueBoss = new Boss();}}return uniqueBoss;}}//双判断模式的写法:internal class Person{private Person() { }private static Person _instance;private static readonly object _instanceLock = new object();public static Person Instance(){if (_instance == null){lock (_instanceLock){if (_instance == null){_instance = new Person();}}}return _instance;}}

实际使用:

 partial class Singleton_ViewModel : ObservableObject{//创建很多个Boss变量Boss boss_1 = Boss.GetBoss();Boss boss_2 = Boss.GetBoss();Boss boss_3 = Boss.GetBoss();[ObservableProperty]private string name;[ObservableProperty]private int age;[ObservableProperty]private string sex;[RelayCommand]private void Li(){Name = boss_1.Name = "李总";Age = boss_1.Age = 38;Sex = boss_1.Sex = "男";Boss1 = boss_1 == boss_2 ? "boss_1 = boss_2" : "boss_1 != boss_2";}[RelayCommand]private void Xie(){Name = boss_2.Name = "谢总";Age = boss_2.Age = 56;Sex = boss_2.Sex = "女";Boss2 = boss_1 == boss_2 ? "boss_1 = boss_2" : "boss_1 != boss_2";}[RelayCommand]private void Zhang(){Name = boss_3.Name = "张总";Age = boss_3.Age = 29;Sex = boss_3.Sex = "男";Boss3 = boss_2 == boss_3 ? "boss_2 = boss_3" : "boss_2 != boss_3";}[ObservableProperty]private string boss1;[ObservableProperty]private string boss2;[ObservableProperty]private string boss3;[RelayCommand]private void t1(){Task.Run(() =>{while (true){Li();Task.Delay(1000);}});}[RelayCommand]private void t2(){Task.Run(() =>{while (true){Xie();Task.Delay(1500);}});}[RelayCommand]private void t3(){Task.Run(() =>{while (true){Zhang();Task.Delay(2000);}});}}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/120687.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux查看内存的方式

1、显示内存状态:free -h  以合适的单位显示内存使用情况,最大为三位数,自动计算对应的单位值。单位有: B bytes K kilos M megas G gigas T teras $free -htotal used free shared buff/cache available Me…

工作小计-GPU硬编以及依赖库 nvcuvidnvidia-encode

工作小计-GPU编码以及依赖库 已经是第三篇关于编解码的记录了。项目中用到GPU编码很久了,因为yuv太大,所以编码显得很重要。这次遇到的问题是环境的搭建问题。需要把开发机上的环境放到docker中,以保证docker中同样可以进行GPU的编码。 1 定…

安装pandas报错

报错信息: C:\Users\Jordan>pip install pandas Looking in indexes: https://pypi.tuna.tsinghua.edu.cn/simple/ Collecting pandasUsing cached https://pypi.tuna.tsinghua.edu.cn/packages/3a/6e/6c9c197ec2da861ea8c9c6848f0f887b7563f16e607bc6a35506af6…

JKPacket权威指南——联系我们

各位在使用JKPacket的过程中遇到问题或者阅读本书发现有错误之处可以通过下方邮箱联系到我。 邮箱:zhangsande18163.com

三代自动驾驶系统及主流科技公司自动驾驶技术方案简介

截止目前,按技术特点,自动驾驶技术大致经历了三代发展:第一代自动驾驶技术以后融合感知技术,高精度地图,基于惯导、GPS定位系统,预测模块,基于优化、搜索的规控等组成。第一代比较成熟的自动驾驶…

是顺流还是逆流?未来物流作业是否将被机器人全面取代?

原创 | 文 BFT机器人 随着人工智能的加速发展,各行业为适应数字时代的潮流,纷纷引入智能制造,帮助企业实现产业升级。而物流行业也不例外,现今人们的生活速度加快,为了快捷便利,很多的人喜欢通过网购、快递…

JavaScript基础知识18——逻辑运算符之短路运算

哈喽,大家好,我是雷工。 本节学习JavaScript基础知识——逻辑运算符中的短路运算,以下为学习笔记。 规则: 1、如果是&&运算,只要遇到false,就立即短路,不会再执行了,直接返回…

Linux学习第24天:Linux 阻塞和非阻塞 IO 实验(一): 挂起

Linux版本号4.1.15 芯片I.MX6ULL 大叔学Linux 品人间百味 思文短情长 在正式开始今天的笔记之前谈一下工作中遇见的一个问题。 本篇笔记主要学习Linux 阻塞和非阻塞 IO 实验,主要包括阻塞和非阻塞简介、等待队列、轮询、…

Spring Authorization Server 1.1 扩展实现 OAuth2 密码模式与 Spring Cloud 的整合实战

目录 前言无图无真相创建数据库授权服务器maven 依赖application.yml授权服务器配置AuthorizationServierConfigDefaultSecutiryConfig 密码模式扩展PasswordAuthenticationTokenPasswordAuthenticationConverterPasswordAuthenticationProvider JWT 自定义字段自定义认证响应认…

知识图谱+推荐系统 文献阅读

文献阅读及整理 知识图谱推荐系统 知识图谱 1 基于知识图谱的电商领域智能问答系统研究与实现 [1]蒲海坤. 基于知识图谱的电商领域智能问答系统研究与实现[D].西京学院,2022.DOI:10.27831/d.cnki.gxjxy.2021.000079. 知识点 BIO标记策略进行人工标记,构建了电商领域商品…

网盘限速问题解析:哪家网盘真的不限速?

天下苦网盘限速久矣。市面上一些网盘工具要不然是收费限流,要不然是需要额外购买下载券。哪家网盘真的不限速? Zoho Workdrive 企业网盘是真正的不限速网盘,上传和下载文件都不限速,真正做到用户的网速有多快,下载就有…

Android13源码添加系统服务

本文基于Android 13的framework层添加系统接口,为应用层提供读写函数、以及执行命令! 添加接口 frameworks/base/core/java/android/app/IDevices.aidl package android.app; interface IDevices {//读取文件String readFile(String path);//写入文件void writeF…

华为数通方向HCIP-DataCom H12-831题库(多选题:61-80)

第61题 在MPLS VPN中,为了区分使用相同地址空间的IPV4前缀,将IPV4的地址增加了RD值,下列选项描述正确的是: A、在PE设备上,每一个VPN实例都对应一个RD值,同一PE设备上,必须保证RD值唯一 B、RD可用于来控制VPN路由信息的发布 C、RD在传递过程中作为BGP的扩展团体性封装在…

易基因: Nature Biotech:番茄细菌性青枯病的噬菌体联合治疗|国人佳作

大家好,这里是专注表观组学十余年,领跑多组学科研服务的易基因。 生物防治是利用细菌接种剂来改变植物根际微生物群落的组成,但在以往研究中存在有接种的细菌在根际建立不良,与本地微生物组争夺资源,干扰本地微生物的…

单元测试,集成测试,系统测试的区别是什么?

实际的测试工作当中,我们会从不同的角度对软件测试的活动进行分类,题主说的“单元测试,集成测试,系统测试”,是按照开发阶段进行测试活动的划分。这种划分完整的分类,其实是分为四种“单元测试,…

存储器概述

一、存储系统基本概念

JS递归(含多个练习)

递归是什么? 调用自身函数称为递归函数 function fn(){fn()}fn()递归的作用和循环是基本一样的 编写递归函数,一定要包含两个条件 1.基线条件 2.递归条件 接下来我用几个实例为大家带来递归的用法 1.使用递归让延迟器有定时器的效果 function timer() …

重庆开放大学学子们的好帮手

作为一名电大学员,我有幸目睹了一个令人惊叹的学习工具的诞生——电大搜题微信公众号。这个创新应用为重庆开放大学(广播电视大学)的学子们提供了便捷、高效的学习资源,成为他们的得力助手。 重庆开放大学是一所为全日制在职人员提…

OpenLayers.js 入门教程:打造互动地图的入门指南

本文简介 戴尬猴,我是德育处主任 本文介绍如何使用 OpenLayers.js (后面简称 ol)。ol 是一个开源 JavaScript 库,可用于在Web页面上创建交互式地图。 ol能帮助我们在浏览器轻松地使用地图功能,例如地图缩放、地图拖动…

文件权限详解

一、文件类型 ll指令查看文件详细信息中,第一列就是文件类型。 常见的文件类型有: 1、 - :普通文件 (文本、源代码、图片、视频、可执行) 2、 d :目录文件 3、b :块设备 4、c &#xff1…