using statement for multiple assignments to the variable

360 Views Asked by At

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.

1

There are 1 best solutions below

0
Dmitry Bychenko On BEST ANSWER

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
}