我的 C# 代码中有一行创建字体以测量字符串的长度:
int width = (int)(myGraphics.MeasureString(text, new Font(myFontName, myFontSize, FontStyle.Bold)).Width);
我的问题是,什么时候处理new Font()
变量?是在处置表单时处置,还是立即处置?
我的 C# 代码中有一行创建字体以测量字符串的长度:
int width = (int)(myGraphics.MeasureString(text, new Font(myFontName, myFontSize, FontStyle.Bold)).Width);
我的问题是,什么时候处理new Font()
变量?是在处置表单时处置,还是立即处置?
Font
已声明终结器:
~Font()
{
this.Dispose(false);
}
当字体对象被创建时,它被注册到终结队列中。这些对象在垃圾回收期间不会被销毁(即内存保持分配状态) - 它们稍后会在调用终结器时被销毁(顺便说一句,终结器可能永远不会执行)。因此最好Dispose
手动或通过using
语句调用。在这种情况下,字体对象将被释放并从最终确定中注销(因此它将在垃圾收集期间从内存中删除):
public void Dispose()
{
this.Dispose(true);
GC.SuppressFinalize(this);
}
您可以在 Jeffrey Richter 的文章中阅读有关垃圾收集和终结的更多信息
每当垃圾收集器感觉时,它就会被处理掉。您不应该过多依赖使用 dispose,因为您不能保证它会很快发生。您可以放心,在您完成使用它之前不会释放它(即在范围内的对象中不存在对它的引用)