csharp设计方法


public class hugryman

私有构造

private hugryman()

私有静态只读实例化

private static readonly hugryman _hugryman=new hugryman();

公有静态读取方法

public static hugryman()

return _hungryman

多次获取的是同一个实例

gethashcode发现是同一个对象

数值一样



缺点

一开始就实例化 浪费性能




改懒汉式

layman

私有构造

私有静态字段

private static _layman

公有静态读取同时实例化

在getlazyman里面实例化

null的时候创建 防止多次实例化

(都要静态)



缺点

会重复创建

如果多个程序同时进入,会实例化多次

重复实例化的缺点

改进方法:

var obj=new object()

lock(obj)

{

}

花括号的内容只允许一个线程进行

例子

private static layman _layman

public static layman getlazyman()

lock(o){

if (_layman==NULL)

{_lazyman=new lazyman()}

}

return _layman

lock实际上是

monitor.enter()

monitor.exit()

防止指针重排的方法

volatile



饿汉式的改造方法

静态内部类

hugrymanstatic

private hungrymanstatic()

private static class innerclass()

{

var _hungrymanstatic=new hungrymanstatic()

}

public static Gethungrymanstatic()

{

return _hungrymanstatuc

}

静态内部类 只在类加载的时候创建一次实例

不会浪费资源



相关推荐
wujian831112 小时前
怎么用千问生成word文档:从「格式崩」到「一键过」,AI导出鸭打通最后半厘米
人工智能·ai·c#·word·豆包·deepseek·ai导出鸭
zlinear数据采集卡13 小时前
D223上位机C#开发实战:从帧解析到波形显示的完整实现
开发语言·arm开发·嵌入式硬件·fpga开发·开源·c#
唐青枫14 小时前
别把 ImmutableArray 当成只读 List:C#.NET 不可变数组深入详解
c#·.net
zlinear数据采集卡17 小时前
D223 ADC数据处理流水线:从原始采样值到工程单位的完整转换链
开发语言·arm开发·嵌入式硬件·fpga开发·开源·c#
花落人散处20 小时前
CDiskClean 开发历程 —— 文件清理_目录树解析实现方案参考
c#
离陌在学C#20 小时前
C# 泛型:从基础到高级应用
开发语言·c#
Vertira21 小时前
C# 与 OpencvSharp 编程[基础目录]
c#
格林威1 天前
多相机并行采图最佳实践:Task.WhenAll + 异常处理 + 资源释放
开发语言·人工智能·数码相机·计算机视觉·c#·视觉检测·机器视觉
yuhulkjv3351 天前
Claude表格复制到word不再崩溃,AI导出鸭批量导出+格式无损一键搞定
人工智能·ai·c#·word·ai导出鸭