public abstract class HttpMessageHandler : IDisposable { protected internal abstract Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken); protected virtual void Dispose(bool disposing) public void Dispose() }
1.Dispose这个虚函数 什么作用,怎么用?
2.下面的Dispose是干吗用的?
买本语法书吧...比如c#高级程序设计.书里都有讲.
对象在被释放时会调用Dispose
继承IDisposable的类,可以显式的调用Dispose方法来释放对象,意思就是这个对象没啥用了,GC啥时候有空,来把它占用的内存资源收走吧~
public void Dispose() 这句代码语法没见过呀,没有封号却不报错。
Dispose字面意思已经很清楚了,理解他相对简单(但Framework中,堆对象是托管式的,那又为什么需要Dispose呢,这个你需要去思考);理解IDisposable就没那么多原理了,首先它作为接口,那么接口在面向对象模式中的用途?(这个需要点经验,你就慢慢体会了);为什么这个接口很特殊——那么微软对这个接口势必有特殊处理(该项很直接查到)。只是玩一个工具而已,多用,多思考,用到什么不认识的动手查询一下就行了。
能举个栗子吗》
CA1063:正确实现 IDisposable
public class Resource : IDisposable { private IntPtr nativeResource = Marshal.AllocHGlobal(100); private AnotherResource managedResource = new AnotherResource(); // Dispose() calls Dispose(true) public void Dispose() { Dispose(true); GC.SuppressFinalize(this); } // NOTE: Leave out the finalizer altogether if this class doesn't // own unmanaged resources itself, but leave the other methods // exactly as they are. ~Resource() { // Finalizer calls Dispose(false) Dispose(false); } // The bulk of the clean-up code is implemented in Dispose(bool) protected virtual void Dispose(bool disposing) { if (disposing) { // free managed resources if (managedResource != null) { managedResource.Dispose(); managedResource = null; } } // free native resources if there are any. if (nativeResource != IntPtr.Zero) { Marshal.FreeHGlobal(nativeResource); nativeResource = IntPtr.Zero; } } }