我的C#代码中有一行创建字体以测量字符串的长度:
int width = (int)(myGraphics.MeasureString(text, new Font(myFontName, myFontSize, FontStyle.Bold)).Width);
我的问题是,new Font()
变量何时处理?表格处理时是处理还是立即处理?
答案 0 :(得分:8)
Font
宣告了终结者:
~Font()
{
this.Dispose(false);
}
创建字体对象时,它已在终结队列中注册。在垃圾收集期间,这些对象不会被销毁(即内存保持分配) - 当终结器被调用时(btw终结器永远不会被执行),它们会被破坏。因此,可以手动或通过Dispose
语句更好地调用using
。在这种情况下,字体对象将从最终化处理和取消注册(因此在垃圾收集期间将从内存中删除):
public void Dispose()
{
this.Dispose(true);
GC.SuppressFinalize(this);
}
您可以阅读有关垃圾收集和最终确定的更多信息in Jeffrey Richter's article
答案 1 :(得分:-2)
每当垃圾收集者感觉到它时都会被处理掉。你不应该依赖使用处理,因为你不能保证很快就会发生。您可以放心,在您完成使用之前不会处理它(即在范围内的对象中不存在对它的引用)