|
|
1
30
创建一个singleton类只是几行代码,而且由于很难创建一个通用的singleton,我总是编写这些代码行。
这个
行消除了锁定的需要,因为静态构造函数是线程安全的。 |
|
2
5
好吧,这不是单身的-因为你不能控制
(拆下的螺纹圈;注意重复检查的用法) |
|
|
3
5
我删除了以前的答案,因为我没有注意到检查非公共构造函数的代码。但是,这是一个仅在执行时执行的检查-没有 编译时间 支票,这是对它的打击。它还依赖于有足够的访问权来调用非公共构造函数,这增加了一些限制。 此外,它并不禁止 内部的 构造器-这样就可以以非单例结束。 为了简单的线程安全,我个人也会在静态构造函数中创建实例。 基本上,我不太喜欢创建单例类——创建单例类很容易,而且无论如何你也不应该经常这样做。单例测试对于测试、分离等来说是一种痛苦。 |
|
|
4
5
这是我使用.NET 4的观点
它的用途如下:
|
|
|
5
1
合并Andreans答案和Jon Skeet's“ Fourth version - not quite as lazy, but thread-safe without using locks “对于单例C实现,为什么不使用代码片段来完成所有繁重的工作:
然后您可以将其保存到.snipt文件中,并将其添加到vs-ide(工具->代码段管理器) |
|
|
6
0
通用的单例工厂有问题,因为它是通用的,所以您不能控制
所以, 不能创建通用的单例工厂-它会破坏模式本身。 |
|
|
7
-1
我不认为使用仿制药对单身汉有用。因为您总是可以创建多个实例,因此 不 根据定义,一个单件。如果你需要一个懒惰的单例,并要求它是一个真正的单例,一个简单的解决方案(基于Alexandr的例子)
不能将其正确重构为单独的泛型单例。 参见: http://csharpindepth.com/Articles/General/Singleton.aspx |
|
|
A B · C#Excel自动调整列避免长文本时出错 9 月前 |
|
|
Megrez7 · C#ToArray转换合并为一行,导致数组元素更改 9 月前 |
|
Aycon · 在工厂方法中释放部分创建的对象的正确方法是什么? 9 月前 |
|
|
Duck0 · 这个对象在更高的帧率下会更快吗,因为它在Update()中? 10 月前 |
|
|
Sei · Avalonia/WPF将路由器传递到控制模板 10 月前 |