在重新填充IDisposable对象之前,您是否必须处置它们?

Ben*_*esh 2 c# idisposable

假设我的命令架构模式中有一个方法可以改变图形路径的内容,如下所示:( GraphicsPath是IDisposable)

(这纯粹是一个未经测试的快速示例)

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);
  }
}
Run Code Online (Sandbox Code Playgroud)

在将路径设置为等于新路径之前,是否需要设置路径?如果是这样,为什么?

Pau*_*sik 8

是.由于您通过引用传递路径变量,因此在重新分配时会"删除"上一个实例.使用Dispose()清理是正确的做法.

  • 恕我直言,答案并不像这样简单.您假设调用代码不再需要引用.这不确定.但是,最终我认为功能的设计是有缺陷的. (2认同)