[英]Dispose instance
第一類:
public class FunctionBlocks
{
List<Hashtable> _htLogicalNodeList;
public FunctionBlocks()
{
_htLogicalNodeList = new List<Hashtable>();
FunctionBlock fb = new FunctionBlock();
fb.AddDODASignalList(new Hashtable);
_htLogicalNodeList.Add(fb.LogicalNodeHash);
fb = null;
}
}
類2:
public class FunctionBlock
{
Hashtable _htLogicalNode;
public FunctionBlock()
{
_htLogicalNode = new Hashtable();
}
public Hashtable LogicalNodeHash
{
get{return _htLogicalNode;}
set{_htLogicalNode = value;}
}
public void AddDODASignalList(Hashtable doDASignal)
{
_htLogicalNode.Add(doDASignal);
}
}
在這個例子中,我不想處理“_htLogicalNode”。 “fb” object 我已將其設為 null,盡管“FunctionBlocks”實例具有“_htLogicalNode”引用。 我如何處理“_htLogicalNode”實例。
覆蓋 dispose 方法,您可以將其設置為 null
“處置”是什么意思? 您可以讓FunctionBlock
實現IDisposable
在這種情況下,您可以使用以下內容:
using (FunctionBlock fb = new FunctionBlock())
{
fb.AddDODASignalList(new Hashtable);
_htLogicalNodeList.Add(fb.LogicalNodeHash);
}
但是,我在FunctionBlock
中看不到任何需要處理的內容,因此這樣做毫無意義 - IDisposable
接口/模式本質上只是在完成 object 后調用方法的一種奇特/穩健的方式。 除非您在已實現的Dispose
方法中執行某些操作,否則這不會執行任何操作。
如果通過“處置”你的意思是釋放 memory 那么答案是你不需要做任何事情(你甚至不需要將fb
設置為 null)。 只需讓fb
go 離開 scope,垃圾收集器就會收集它並在自己的時間釋放使用過的 memory。
您可能會發現fb
使用的 memory 沒有立即釋放 - 這是完全正常的,也是意料之中的。 有一些方法可以強迫垃圾收集器在你想要的時候做“它的事情”,但這樣做是非常糟糕的做法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.