Ну, в вашем примере вы делаете создание экземпляра одноразового объекта немедленно - только на основе условия.Например, вы можете использовать:
using (MyThing thing = _config == null ? new MyThing() : new MyThing(_config))
{
...
}
Чтобы быть более общим, вы можете использовать метод:
using (MyThing thing = CreateThing(_config))
{
}
Хитрый бит будет, если время создания экземпляра изменилось на основеразличные условия.Это действительно будет сложнее сделать с помощью оператора using
, но также предложит , чтобы вы попытались реорганизовать свой код, чтобы избежать этого требования.Это не всегда возможно, но стоит попробовать.
Другая альтернатива заключается в инкапсуляции «вещи» в оболочку, которая будет лениво создавать одноразовый объект real и делегироватьчто для утилизации и все остальное, что вы можете сделать с типом.Такое делегирование может быть болезненным в некоторых ситуациях, но может подойти - в зависимости от того, что вы действительно пытаетесь сделать.