我在 Pocket PC 2003 (Visual Studio 2005) 的 .NET CF 2.0 项目中遇到了一些奇怪的情况。我正在处理 System.IO.Stream
对象,发现 IDE 不会自动完成 Dispose()
方法。我手动输入并收到:
'System.IO.Stream.Dispose(bool)' is inaccessible due to its protection level
该错误涉及 protected Dispose(bool)
方法。 Dispose()
要么是私有(private)的,要么不存在。
问题 1:这怎么可能? Stream
实现 IDisposable
:
public abstract class Stream : MarshalByRefObject, IDisposable
...和 IDisposable
需要 Dispose()
方法:
public interface IDisposable
{
void Dispose();
}
我知道编译器不会让我在代码中摆脱这一点。
问题 2: 直接解决和处置流会导致问题吗?
IDisposable idisp = someStream;
idisp.Dispose();
编译器接受隐式转换。
编辑:这已经在question 939124中得到了回答。 。 Stream
类显式实现 IDisposable
。这是我完全忘记的语言功能。
最佳答案
Stream 实现了 IDisposable 接口(interface),但隐藏了“官方”名称 Dispose 并公开了内部调用它的方法 Close。因此调用 Stream.Close() 等于调用 IDisposable.Dispose()。
还有 q2: 不,这不会造成问题,但没有必要。
关于c# - .NET CF 2.0 : Stream implements IDisposable . .. 怎么样?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2858736/