I thought the using statement was translated into IL, which is similar to:
try { } finally { disposableUsedObject.Dispose(); }
So, I think under normal circumstances, should Dispose be called?
In addition, you should not throw exceptions inside the constructor , since users will not expect that an exception will be thrown when creating an instance of the object. I would move the initialization logic, which could throw an exception from another method (Initialize), which should be called after creating an instance of the object.
source share