【发布时间】:2010-05-18 15:35:13
【问题描述】:
我在 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
...和IDisposable 需要Dispose() 方法:
public interface IDisposable
{
void Dispose();
}
我知道编译器不会让我在我的代码中逃脱惩罚。
问题 2:我会通过解决和直接处理我的流而导致问题吗?
IDisposable idisp = someStream;
idisp.Dispose();
编译器接受隐式转换。
编辑:这已经在question 939124 中得到回答。 Stream 类显式地实现了IDisposable。这是我完全忘记的语言功能。
【问题讨论】:
-
我建议使用
using构造,它会为您转换为IDisposable。
标签: c# .net compact-framework .net-2.0