Плохая практика? Неканоническое использование оператора использования c #

C # имеетusing оператор, специально для IDisposable объектов. Предположительно, любой объект, указанный вusing Оператор будет содержать некоторый ресурс, который должен быть освобожден детерминистически.

Тем не менее, мне кажется, что в программировании есть много проектов, которые имеют одно определенное начало и конец, но не имеют внутренней языковой поддержки.using Конструкция дает возможность использовать встроенные функции редактора кода, чтобы, по крайней мере, четко и естественно выделить область действия такого проекта или операции.

Я имею в виду вид операции, которая часто начинается сBeginXXX() а такжеEndXXX() метод, хотя существует множество различных разновидностей, таких как асинхронное выполнение кода, которое включает в себя & quot; start & quot; и "присоединиться".

Возьми этот наивный пример.

webDataOperation.Start();
GetContentFromHardDrive();
webDataOperation.Join();
// Perform operation that requires data from both sources

Что если вместо этого метод Start вернул объект,IDisposable.Dispose Метод выполняет операцию соединения.

using(webDataOperation.Start()) {
    GetContentFromHardDrive();
}
// Perform operation that requires data from both sources

Или, еще лучше, что я специально имел в виду: у меня есть объект, который выполняет узкоспециализированные графические блики и имеетBegin() а такжеEnd() метод (дизайн также присутствует в DirectX и XNA). Вместо...

using(blitter.BlitOperation()) {
    // Do work
}
// Use result

Это кажется более естественным и читабельным, но это нецелесообразно, поскольку он используетIDisposable интерфейс иusing заявление для непреднамеренных целей? Другими словами, будет ли это на одном уровне сverloading an operator in a non-intuitive way?

Ответы на вопрос(6)

Ваш ответ на вопрос