Да, ручка будет утилизирована. Это действительно плохая идея; Вы возвращаете ручку, которая уже утилизирована!
Что вы хотите сделать, это удалить оператор Using из GetPen. Оператор Using должен использоваться вызывающими сторонами GetPen:
Using pen As Pen = GetPen()
''// Draw with this pen
End Using
Или в C #:
using(Pen pen = GetPen())
{
// Draw with this pen
}
[EDIT]
Да, ссылка на вызывающий метод возвращается, а не копия. Вот почему, если вы используете перо в GetPen, вы не можете использовать это перо в вызывающем методе; -)
Поскольку GetPen и вызывающий метод указывают на один и тот же объект Pen, вам просто нужно вызвать Dispose в вызывающем методе.