Search code examples
c#.netusing-statement

using statement for multiple assignments to the variable


I have a variable "pen" of type System.Drawing.Pen which is getting assigned multiple times in a particular method. I want to put it within "using" statement. How I can do that?

Pen pen = new Pen(Color.Gray);
// some code which uses gray value
pen = new Pen(Color.Green);
// some code which uses green value
pen = new Pen(Color.Red);
// some code which uses red value

Thanks in advance.


Solution

  • Well, Pen implements IDisposable since it allocates unmanaged resources (HPEN) and thus in general case using is required. In your current code you have resource leakage:

    Pen pen = new Pen(Color.Gray);
    
    // some code which uses gray value
    
    pen = new Pen(Color.Green); // <- from now on Pen(Color.Gray) is leaked
    
    // some code which uses green value
    pen = new Pen(Color.Red);  // <- from now on Pen(Color.Green) is leaked
    // some code which uses red value
    

    You can either use predefined pens (no using required):

    Pen pen = Pens.Gray;
    
    // some code which uses gray value
    
    pen = Pens.Green;
    
    // some code which uses green value
    
    pen = Pens.Red;
    
    // some code which uses red value
    

    Or if you want to create Pens manually, wrap them into using:

    using (Pen pen = new Pen(Color.Gray)) {
      // some code which uses gray value
    }
    
    using (Pen pen = new Pen(Color.Green) {
      // some code which uses green value
    }
    
    using (Pen pen = new Pen(Color.Red)) {
      // some code which uses red value
    }