c# - 如何销毁C#中的静态类

标签 c#

我正在使用 .net 1.1。我有一个 session 类,我在其中存储了许多静态变量,这些变量保存了一些供许多类使用的数据。

我想找到一种简单的方法来销毁这个类,而不是一个一个地重置每个变量。例如,如果有一个静态类 MyStatic,我想通过写 MyStatic = null 来销毁/从内存中删除这个类,这目前是不可能的,

附加问题。

单例的想法很好,但是我有以下问题:

如果实现了singleton,'single'对象仍然会保留在内存中。在单例中,我们只检查一个实例是否已经存在。我怎样才能确保这个实例变量也被销毁。

我有一个主类,它初始化静态类中的变量。即使我计划实现一个 Rest() 方法,我也需要从一个方法中调用它,例如,主类中的析构函数。但是这个析构函数只有在 GC 在内存中收集这个主类对象时才会被调用,这意味着 Reset() 被调用得很晚

谢谢 普拉迪普

最佳答案

不要使用静态类来存储变量。使用一个实例(如果您在任何给定时间只需要一个实例,则将其设为单例。)然后您可以实现 IDisposible,并在您想要销毁它时调用 Dispose()。

有关更多信息,请查看此站点:http://csharpindepth.com/Articles/General/Singleton.aspx

编辑

该对象仍需进行垃圾回收,因此除非您使用大量非托管资源,否则应该没问题。您可以实现 IDisposible 来清理任何需要清理的资源。

关于c# - 如何销毁C#中的静态类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/531199/

相关文章:

c# - 检查 NSURLError.Cancelled

c# - 哪个用于 C# : static, const 中的算法参数,只读?

c# - 删除上传的文件,如果它没有移动到另一个文件夹

c# - 将对象添加到泛型 List<T> 的开头

c# - 有没有办法让字符串达到年份值?

c# - 带有 DapperExtensions 的谓词

c# - SslStream 接受证书?

c# - 实现扩展方法来过滤 IEnumerable<T> 会产生一些错误

c# - 如何检查文本值是否在包含 DataRowView 的控件的数据源中?

c# - 创建具有完全信任权限(包括网络权限)的托管 CLR AppDomain