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