Я столкнулся с чем-то странным в проекте .NET CF 2.0 для Pocket PC 2003 (Visual Studio 2005). Я имел дело с 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();
Неявное приведение принимается компилятором.
Редактировать: На этот вопрос уже был дан ответ в вопрос 939124 . Класс Stream
реализует IDisposable
явно. Это функция языка, о которой я полностью забыл.