c# - .NET CF 2.0 : Stream implements IDisposable . .. 怎么样?

标签 c# .net 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)' 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/

相关文章:

复制文件的 C# 代码,这个片段可以改进吗?

c# - .net c# <a href> 链接,在正确位置时终止链接

c# - Entity Framework linq 查询何时返回动态代理类型,何时不返回?

c# - 如何使用 C# 从回收站恢复文件?

c# - 如何为我的 ASP.NET TextBox 获取正确的 ClientID?

c# - 单击单元格时选中 Datagridview 复选框

c# - 在类库项目中统一依赖注入(inject)

java - 如何使用 Visual Basic 向需要字符串的服务器发出 POST 请求?

.net - 在 Windows Mobile 中找不到 PInvoke DLL 错误

.NET CF 3.5 Forms 与仅同步网络设备对话