Can "using" with more than one resource cause a resource leak?
c#, using, using-statement
Solution
No.
The compiler will generate a separate `finally` block for each variable.
The spec (§8.13) says:
When a resource-acquisition takes the form of a local-variable-declaration, it is possible to acquire multiple resources of a given type. A `using` statement of the form
using (ResourceType r1 = e1, r2 = e2, ..., rN = eN) statement
is precisely equivalent to a sequence of nested using statements:
using (ResourceType r1 = e1)
using (ResourceType r2 = e2)
...
using (ResourceType rN = eN)
statement
Problem
C# lets me do the following (example from MSDN): ``` using (Font font3 = new Font("Arial", 10.0f), font4 = new Font("Arial", 10.0f)) { // Use font3 and font4. } ``` What happens if `font4 = new Font` throws? From what I understand font3 will leak resources and won't be disposed of. - Is this true? (font4 won't be disposed of) - Does this mean `using(... , ...)` should be avoided altogether in favor of nested using?