C# 可以删除对象吗?

spe*_*yck 0 c#

Account我有一个存储在 中的对象列表AccountList。现在我想删除一个Accountso,如果我仍然拥有该对象,我也无法将其再次添加到列表中 - 这意味着该对象根本不应该再存在。

在我的代码中,我浏览列表AccountList并搜索Account匹配的id. Account然后,当找到匹配时,Account应该将其删除(因此也从 中删除AccountList)。

public bool Delete_Account(int id)
{
    foreach (var account in AccountList)
    {
        if (account.id == id)
        {
            //delete Account object here
            return true;
        }
    }
    return false;
}
Run Code Online (Sandbox Code Playgroud)

这在 C# 中可能吗?如果不可能,我将如何实现我想要做的事情?

vas*_*sib 7

人们不会简单地删除C#.

C#是一种托管语言,这意味着所有内存分配/释放内容都从程序员范围中移出。当您var x = new object();- .net CLR(公共语言运行时)分配必要的内存并开始跟踪对此内存的引用。

当引用计数下降到 0 时(即,当您从方法返回并且变量x从您的作用域中消失时,或者当您这样做时x = null;) - 该内存被标记为删除,并且在之后的某个时间(不保证何时,也许在下一毫秒,也许在下个月) )一个称为GC(垃圾收集器)的特殊服务将最终释放这块内存。

因此,只需从列表中删除该对象,如果它没有存储在任何其他列表/变量中,则其分配的内存将在某个时候被释放(同样,没有人知道确切的时间)。

当您开始使用非托管资源(例如操​​作系统窗口句柄)时,事情会变得更加有趣,但这是另一个故事了。