Search code examples
c#using

Is the using var always executed?


In some code that I maintain, I came across this:

int Flag;
using (StreamReader reader = new StreamReader(FileName, Encoding.GetEncoding("iso-8859-1"), true))
{
    Flag = 1;
    // Some computing code
}

if(Flag == 1)
{
    // Some other code
}

Which, from what I understand, is a way to do some other instruction if the using part was executed. But is there a possibility for using to be not executed (Except if an exception is raised)? Or is this completely useless code?


Solution

  • That code is useless...

    If you add a try... catch it could have a sense... You want to know if/where an exception happens, like:

    int flag = 0;
    
    try
    {
        using (StreamReader reader = new StreamReader(FileName, Encoding.GetEncoding("iso-8859-1"), true))
        {
            flag = 1;
    
            reader.ReadToEnd();
            flag = 2;
        }
    
        flag = int.MaxValue;
    }
    catch (Exception ex)
    {
    
    }
    
    if (flag == 0)
    {
        // Exception on opening
    }
    else if (flag == 1)
    {
        // Exception on reading
    }
    else if (flag == 2)
    {
        // Exception on closing
    }
    else if (flag == int.MaxValue)
    {
        // Everything OK
    }