Я столкнулся с чем-то странным в проекте .NET CF 2.0 для Pocket PC 2003 (Visual Studio 2005). Я имел дело с объектом System.IO.Stream
и обнаружил, что IDE не будет автоматически заполнять метод Dispose()
. Я напечатал его вручную и получил:.NET CF 2.0: Stream реализует IDisposable ... вроде?
«System.IO.Stream.Dispose (Ую)» недоступно из-за его уровень защиты
Ошибка обращается к защищаемому 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' для вас. –
Возможный дубликат [Как IDisposable реализован в FileStream в .Net 1.1] (http://stackoverflow.com/questions/939124/how-is-idisposable-implemented-on-filestream-in-net-1-1) –