c# - 我可以设置一些东西来让一个类在卸载时做一些事情吗

标签 c#

如果我有课,

class order()
{
    int orderId {get;set;}
    double total {get;set;}
    public order(){}
    ...
}

是否有一些我可以重载的东西,以便 c# 每次要卸载时都会执行某些操作,而不是告诉它我希望它完成?

   static void Main(string[] args)
        {
            Order activeOrder = new Order();
            // do stuff to the order
            activeOrder = new Order(); <---- Automatically commit any changes to the order, since I am starting a new one. 
        }

最佳答案

你问的根本没有意义。当您将新的 Order 实例分配给 activeOrder 变量时,第一个 Order 实例不会“卸载”。它只是有资格进行垃圾收集(除非它也在其他地方被引用)。这意味着下次 GC 运行时,实例将被收集,并且终结器将运行(如果已定义)。问题是它完全是不确定的:你不知道 GC 何时运行。

Order 类无法检测到该变量被分配了一个新实例。您所能做的就是编写一个终结器,但由于您不知道它何时运行,因此这可能不是一个好主意。处理完当前订单后,您应该显式提交更改。

关于c# - 我可以设置一些东西来让一个类在卸载时做一些事情吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28132402/

相关文章:

c# - 我什么时候应该或不应该使用泛型类型约束?

C# 动态 SQL 查询

c# - 如何使用 XmlSerializer 来处理不同的命名空间版本?

c# - 具有从字符串到类型的隐式转换的模型绑定(bind)属性

c# - 如何使用 C# 实现 Modbus 功能 20?

c# - Expression.PropertyOrField 为字符串属性返回 "not a member of type ' System.String'"

c# - Windows 服务不工作

c# - 小型转储中的 .ni.dll 和 .ni.exe 文件是什么?

c# - 解析大文本文件,即时修改

c# - 我可以使用 SerialPort.Write 发送字节数组吗