Плохая практика? Неканоническое использование оператора использования 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?