完了したら、それを処分する必要があります。例えば
、あなたはこのようにそれを呼び出すことができます。
using (Pen p = CreatePenFromColor(color))
{
// do something
}
方法は、IDisposableのオブジェクトを返す場合、それを処分するためにあなたの義務です。
[編集]私はペン(ブラシb)コンストラクタを使用しています。
a。この場合、Penはコンストラクタの後にBrushインスタンスを必要としないため、メソッドは次のようになります。
public Pen CreatePenFromColor(Color c)
{
using (Brush b = new SolidBrush(c))
{ return new Pen(b); }
}
b。単にPen(Color color)を使用しないのはなぜですか?
public Pen CreatePenFromColor(Color c)
{
return new Pen(c);
}
c。 (コメントに関して)もしペンが内部的にブラシへの参照を保持するならば、ペンを使い終える前にそれを処分することはできません。
public class PenHelper : IDisposable
{
private readonly Brush _brush;
public PenHelper(Color color)
{
_brush = new SolidBrush(color);
}
public Pen CreatePen()
{
return new Pen(_brush);
}
public void Dispose()
{
_brush.Dispose();
}
}
をし、このようにそれを使用します:
using (PenHelper penHelper = new PenHelper(Color.Black))
{
using (Pen pen = penHelper.CreatePen())
{
// do stuff
}
}
免責事項:IDisposableをは、ガイドラインに従って実装されていませんが、その場合、私は私のために仕事をするだろうクラスのために行くだろうむしろデモンストレーションのためだけです。また、サンプル全体は、必要なときに参照をカプセル化する方法を示すためにのみ使用されます。もちろんペン(色)に行ってください。
o.O私はブラシとペンがIDisposableを実装していることを知らなかった... –
lol、それは確かにあります。 –
しかし、このブラシは実際にどこで参照されていますか?あなたがペンの結果を返すだけの場合、なぜ(そしてどこで)それを作成していますか? – Groo