Vous devez quand même l'éliminer lorsque vous avez terminé.
Par exemple, vous pouvez l'appeler comme ceci:
using (Pen p = CreatePenFromColor(color))
{
// do something
}
Si une méthode renvoie un objet IDisposable, il est de votre devoir de le disposer.
[Éditer] Maintenant j'ai eu la question - vous utilisez le constructeur Pen (Brush b).
a. Dans ce cas, il semble que Pen n'a pas besoin de l'instance brosse après le constructeur, de sorte que votre méthode pourrait ressembler à ceci:
public Pen CreatePenFromColor(Color c)
{
using (Brush b = new SolidBrush(c))
{ return new Pen(b); }
}
b. Pourquoi ne pas simplement utiliser Pen(Color color)?
public Pen CreatePenFromColor(Color c)
{
return new Pen(c);
}
c. (en ce qui concerne le commentaire) Si le stylo contient une référence interne au pinceau, vous ne pourrez pas le jeter avant d'avoir fini avec le stylo. Dans ce cas, je pencherais pour une classe qui ferait le travail pour moi:
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();
}
}
puis l'utiliser comme ceci:
using (PenHelper penHelper = new PenHelper(Color.Black))
{
using (Pen pen = penHelper.CreatePen())
{
// do stuff
}
}
Avertissement: IDisposable ne sont pas mis en œuvre conformément aux lignes directrices, mais plutôt pour la démonstration seulement. En outre, l'exemple entier est utilisé uniquement pour montrer comment encapsuler une référence en cas de besoin. Vous devriez aller pour Pen (couleur) bien sûr.
o.O Je ne savais pas que Brush and Pen implémentait IDisposable ... –
lol, c'est certainement le cas. –
Mais où est ce pinceau référencé? Pourquoi (et où) le créez-vous si vous renvoyez seulement un stylo comme résultat de la méthode? – Groo