当前位置:  开发笔记 > 编程语言 > 正文

为什么在BinaryReader上调用Dispose()会导致编译错误?

如何解决《为什么在BinaryReader上调用Dispose()会导致编译错误?》经验,为你挑选了1个好方法。

我有以下类在内部使用BinaryReader并实现IDisposable.

class DisposableClass : IDisposable
    {
        private BinaryReader reader;
        public DisposableClass(Stream stream)
        {
            reader = new BinaryReader(stream);
        }

        protected virtual void Dispose(bool disposing)
        {
            if (disposing)
            {
                ((IDisposable)reader).Dispose();
//                reader.Dispose();// this won't compile
            }
        }

        public void Dispose()
        {
            this.Dispose(true);
        }
    }

我已经发现我需要将BinaryReader转换为IDisposable以便能够在其上调用Dispose,但我不明白为什么我不能直接调用Dispose()方法而不转换为IDisposable?



1> Jeff Yates..:

它不起作用,因为已经明确实现了Disposeon on方法BinaryReader.

而不是隐式实现,如:

public void Dispose()
{
}

......已经明确实施,如:

void IDisposable.Dispose()
{
}

...这意味着它只能通过IDisposable界面访问.因此,您必须IDisposable先将实例强制转换.

推荐阅读
k78283381
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有