bon*_*obo 6 .net dispose memorystream
由于MemoryStream是一个非托管资源,它总是必须处理?
鉴于:
1) A method is invoked.
2) A MemoryStream object is created (MemoryStream ms = new MemoryStream();).
3) An exception occurs and is caught from the invoking classes.
Run Code Online (Sandbox Code Playgroud)
因此,MemoryStream对象上的引用将丢失.这种情况需要try/finally-block(或using语句)吗?
SLa*_*aks 16
通常,必须始终处理所有一次性物品.
但是,MemoryStream实际上并不需要处理,因为它没有任何非托管资源.(它只是一个byte[]和一个int)
它首先是一次性的唯一原因是它继承了Stream实现的抽象类IDisposable.
请注意,必须处理所有其他流.
任何实现的类型IDisposable都应该Dispose通过 try/catch/finally 块或通过 using 语句显式调用它。
在某些情况下,从技术上讲MemoryStream不需要处理,但是为了尊重接口并保护自己免受下游更改的影响,Dispose仍然应该调用。
| 归档时间: |
|
| 查看次数: |
2473 次 |
| 最近记录: |