gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 19:14:36 25 4
gpt4 key购买 nike

我有以下在内部使用 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?

最佳答案

它不会工作,因为 BinaryReader 上的 Dispose 方法已被显式实现。

而不是隐式实现,如:

public void Dispose()
{
}

...它已被明确实现,如:

void IDisposable.Dispose()
{
}

...这意味着它只能通过IDisposable 接口(interface)访问。因此,您必须先将实例转换为 IDisposable

关于c# - 为什么在 BinaryReader 上调用 Dispose() 会导致编译错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/222996/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com