Я использовал класс FtpWebResponse и не видел метод Dispose. Оказывается, что класс реализует IDisposable, но делает это явно, чтобы вы сначала перенесли свой экземпляр в IDisposable перед вызовом Dispose:
// response is an instance of FtpWebResposne
((IDisposable) response).Dispose();
Почему разработчик такого класса, как этот, может явно реализовать IDisposable? Как говорит Энтони Пегем, выполнение подобных действий маскирует тот факт, что объект должен быть утилизирован для среднего разработчика, который не обращается к документации каждый раз, когда он/она использует класс.