Есть ли недостатки использования «использования» для всех непримитивных объектов? - PullRequest
0 голосов
/ 20 января 2012

Я уверен, что есть ответы там ... но поиск по "C # using" немного сложнее, чем вы можете ожидать.

Во всяком случае ... на самом деле я только начал изучать эту удобную технику на днях, и кажется, что было бы глупо не использовать ее для любых непримитивных объектов, которые есть в моем коде.

Является ли это довольно точным утверждением или есть некоторые недостатки (за исключением немного более загроможденного кода) использования "использования" почти для всего?

Ответы [ 2 ]

5 голосов
/ 20 января 2012

Непонятно, что вы имеете в виду - если вы имеете в виду использование таких выражений, как:

using (SomeType x = new SomeType())
{
}

Тогда это только применимо к IDisposable реализациям.

Есливы имеете в виду использование директив следующим образом:

using System.IO;

тогда да, у меня обычно есть директива для каждого пространства имен, содержащего тип, который я хочу использовать в конкретном исходном файле.

2 голосов
/ 20 января 2012

Как уже упоминалось, оператор using можно использовать только для типов, которые реализуют IDisposable.Для типов, которые реализуют IDisposable, единственный реальный недостаток, который я видел, связан с тем фактом, что using вызывает метод Dispose() типа неявно, поэтому, если в этом вызове возникает исключение, иногда бывает трудно отловить.

В противном случае я бы порекомендовал using для типов, которые реализуют IDisposable вместо использования try-catch-finally, поскольку это делает код более компактным и чистым. нашел хорошую статью MSDN , объясняющую эту и другие ловушки.

...