重新初始化对象

时间:2013-09-19 09:18:08

标签: c#

我有一个应用程序,每次处理时都需要重新初始化。类似的东西:

private void method(int someValue, int someValue2)
{
 obj.val1 = someNewValue;
 obj1.Val2 = someNewValue2;
}

将重复调用此方法。所以我怀疑每次重新初始化对象有什么用呢?就像是;

private void method(int someValue, int someValue2)
{
 obj = new object();
 obj.Val1 = someNewValue;
 obj1.Val2 = someNewValue2;


}

我知道将null分配给一个对象并没有什么结果。 或者我应该实施IDisposable?问题是我每次都需要新的价值。在这种情况下,分配是否正常?如果我重新初始化,我不知道已经分配的对象会发生什么,如第二种方法所示。

2 个答案:

答案 0 :(得分:5)

“引用对象”只有在使用非托管内存时才需要处理(通过调用Dispose())。所有这些对象(在.NET类库中)都实现了IDisposable。另一方面,受管对象由垃圾收集器在后台自动收集(删除)。事实上,没有直接的方法来删除托管对象。你不应该担心这些对象。一旦它们超出范围,GC最终会释放它们的记忆。

简单地为托管变量分配新值会释放先前值的引用,因此可供GC删除。

答案 1 :(得分:3)

这个Object是一个自定义类吗?如果是这样,我会写一个“重置()”方法来完成你需要的所有重置。

例如,你会打电话给

private void method(int someValue, int someValue2)
{
 obj.Reset();
 obj.Val1 = someValue;
 obj1.Val2 = someValue2;
}

在重置功能中,你可以做任何你需要考虑的对象“重新初始化”

public void Reset()
{
    this.Val1 = 0;
    this.Val2 = 0;
    this.Name = "";
    this.Date = DateTime.MinDate;
    //You get the Idea, reset whatever needed to whatever you need.
}

使用此函数,您也可以在构造函数中简单地调用“Reset();”所以你知道当另一个方法在这个对象上调用“Reset”以及一个新的对象时,这些值是相同的。