mva*_*bem 2 .net c# compact-framework .net-2.0
我在Pocket PC 2003(Visual Studio 2005)的.NET CF 2.0项目中遇到了一些奇怪的事情.我正在处理一个System.IO.Stream对象,发现IDE不会自动完成该Dispose()方法.我手动输入并收到:
由于其保护级别,'System.IO.Stream.Dispose(bool)'无法访问
错误是指受保护的Dispose(bool)方法.Dispose()是私人的还是不存在的.
问题1:这怎么可能?Stream实施IDisposable:
public abstract class Stream : MarshalByRefObject, IDisposable
Run Code Online (Sandbox Code Playgroud)
......并且IDisposable需要一种Dispose()方法:
public interface IDisposable
{
void Dispose();
}
Run Code Online (Sandbox Code Playgroud)
我知道编译器不会让我在我的代码中侥幸逃脱.
问题2:我是否会通过直接处理我的流来解决问题?
IDisposable idisp = someStream;
idisp.Dispose();
Run Code Online (Sandbox Code Playgroud)
编译器接受隐式转换.
Stream实现了IDisposable接口,但隐藏了"官方"名称Dispose并公开了在内部调用它的方法Close.所以调用Stream.Close()等于调用IDisposable.Dispose().
并且q2:不,这不会导致问题但不是必要的.
| 归档时间: |
|
| 查看次数: |
810 次 |
| 最近记录: |