|
|
1
19
不要使用静态类来存储变量。使用一个实例(如果在任何给定时间只需要一个实例,则将其设置为单例。)然后,您可以实现IDispoible,并在想要销毁它时调用Dispose()。 有关更多信息,请查看此网站: http://csharpindepth.com/Articles/General/Singleton.aspx 编辑
|
|
|
2
9
使用类的静态实例而不是静态类:
您还可以委托给类的一个实例:
|
|
|
3
6
除非静态驻留在单独的AppDomain中,否则无法销毁它,在这种情况下,您可以通过卸载AppDomain来删除它。然而,通常最好避免静校正。 编辑:附加问题 当单例不再被引用时,它将像其他所有东西一样被收集。换句话说,如果你想收集它,你必须确保没有对它的引用。不言而喻,如果你存储对单例的静态引用,你会遇到和以前一样的问题。 |
|
|
4
2
使用像ktrauberman所说的Singleton,并具有初始化方法或重置方法。您只需编写一次代码并调用该方法。 |
|
|
5
2
你破坏的是对象,而不是类。静态类没有什么错——C#提供静态类是有原因的。Singleton只是额外的开销,除非你真的需要一个对象,例如当你必须将对象作为参数传递时。 静态类只包含静态变量。这些变量往往会持续应用程序的生命周期,在这种情况下,除非你有轻微的强迫症,否则你不必担心处理引用的对象。这只剩下静态类在其整个生命周期内分配和释放资源的情况。在适当的时候像往常一样处理这些物品(例如,“使用…”)。 |
|
|
6
1
|
|
|
7
1
|
|
8
1
以Ahemd Said的回答为基础:(并支持他!)
|
|
|
9
0
您可以在静态类中创建一个方法,重置所有属性的值。
现在,您可以从任何其他类中使用以下任何方法来重置静态类的值 方法1-直接呼叫
方法2-从已知名称空间和已知类动态调用方法
方法3-从程序集/程序集动态调用方法
|
|
|
10
0
在启动时从实现IDisposable的非静态类将对象注入静态类中,然后在非静态类被销毁时,静态类使用的对象也被销毁。 确保实现类似“Disable()”的东西,这样静态类就会知道它的对象刚刚被设置为null。 例如,我有一个logger类,如下所示:
在Form的构造函数中,我调用以下命令来设置记录器。
然后,在我的项目中的任何一节课上,我都可以做以下事情:
|
|
|
A B · C#Excel自动调整列避免长文本时出错 9 月前 |
|
|
Megrez7 · C#ToArray转换合并为一行,导致数组元素更改 9 月前 |
|
Aycon · 在工厂方法中释放部分创建的对象的正确方法是什么? 9 月前 |
|
|
Duck0 · 这个对象在更高的帧率下会更快吗,因为它在Update()中? 10 月前 |
|
|
Sei · Avalonia/WPF将路由器传递到控制模板 10 月前 |