从类中删除或处置可处置性

本文关键字:删除 | 更新日期: 2023-09-27 18:15:02

我需要将一次性对象存储为类成员。这是HttpClient这是一次性的,我可以手动处理它或把它放入使用(var client=new ....)。现在想象一下这样的情况:

public class Session
{
    private HttpClient m_httpClient;
    public Session()
    {
       m_httpClient = new HttpClient();
    }
}

如何处理HttpClient ?当删除会话时,垃圾收集器是否也会处理一次性HttpClient ?c++中有析构函数。在c#中,这是不必要的。那么我是否应该让会话对象也是一次性的呢?谢谢你。

从类中删除或处置可处置性

你应该通过在你的类上实现IDisposible来处理这个问题,垃圾收集器不会自动处理这个对象。

下面是一个简化的版本,但请查看这篇文章以获得最佳实践和这个问题&回答

public class Session : IDisposible
{
    private HttpClient m_httpClient;
    public Session()
    {
       m_httpClient = new HttpClient();
    }
    public void Dispose()
    {
       m_httpClient.Dispose();
    }
}