En supposant que j'ai une méthode dans mon modèle d'architecture de commande qui modifie le contenu du chemin graphique comme ceci: (GraphicsPath IDisposable)Vous devez disposer des objets IDisposable avant de les repeupler?
(ce qui est purement un exemple non testé, rapide)
public void DoSomething(ref GraphicsPath path)
{
if(path != null)
{
List<PointF> pts = new List<PointF>();
foreach(PointF pt in path.PathPoints)
{
//again, just a silly example.
float y = pt.X;
float x = pt.Y;
pts.Add(new PointF(x, y));
}
path.Dispose(); //<-- Do I need this?
path = new GraphicsPath(pts.ToArray(), path.PathTypes);
}
}
Do I besoin de disposer le chemin avant de définir le chemin égal au nouveau chemin? Si oui, pourquoi?
Votre question a déjà reçu une réponse, mais la conception globale n'est pas une bonne pratique. Les paramètres de référence en général sont une odeur de code. Envisager de refactoring, peut-être à GraphicsPath DoSomething (chemin GraphicsPath). – TrueWill
Un changement qui à un « GraphicsPath DoSomething (entrée GraphicsPath) », et que le Éliminez de l'appelant de l'objet lui-même. Je (personnellement) n'aime pas ref/out, et il est souvent possible de réécrire un tel code en code qui n'utilise pas ref/out. – sisve
Je suis entièrement d'accord avec TrueWill. Puisque vous détruisez une instance et en créez une autre, un paramètre 'ref' est au mieux ambigu. Si vous changez votre signature de méthode pour 'GraphicsPath DoSomething (chemin GraphicsPath)' vous pouvez laisser à l'appelant de vous assurer que le 'GraphicsPath' est disposé (avec un bloc' using', par exemple). –