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

}

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

不会浪费资源



相关推荐
似水明俊德7 小时前
02-C#.Net-反射-面试题
开发语言·面试·职场和发展·c#·.net
阿蒙Amon9 小时前
C#常用类库-详解SerialPort
开发语言·c#
似水明俊德10 小时前
02-C#.Net-反射-学习笔记
开发语言·笔记·学习·c#·.net
.NET修仙日记16 小时前
Acme.ReturnOh:让.NET API返回值处理更优雅,统一响应格式一步到位
c#·.net·webapi
阿蒙Amon17 小时前
C#常用类库-详解YamlDotNet
开发语言·c#
Sunsets_Red20 小时前
乘法逆元的 exgcd 求法
c++·学习·数学·算法·c#·密码学·信息学竞赛
唐青枫20 小时前
深入理解 C#.NET TaskScheduler:为什么大量使用 Work-Stealing
c#·.net
人工智能AI技术21 小时前
Claude 3.7 企业版私有化部署技术验证:与 .NET 实战方案
人工智能·c#
呆子也有梦21 小时前
思考篇:积分是存成道具还是直接存数值?——ET/Skynet 框架下,从架构权衡到代码实现全解析
游戏·架构·c#·lua
我是唐青枫21 小时前
深入理解 C#.NET Task.Run:调度原理、线程池机制与性能优化
性能优化·c#·.net