【发布时间】:2017-11-01 09:15:43
【问题描述】:
List<object> obj = new List<object>();
List<objectTypeof_d> list = new List<objectTypeof_d>();
foreach (Object o in obj)
{
d = new Object();
d = o;
list.add(d);
}
我试图理解,当我们在循环中声明 d = new Object(); 时,每次循环都会创建新的对象实例。更好的编码或下面是正确的。
List<object> obj = new List<object>();
List<objectTypeof_d> list = new List<objectTypeof_d>();
foreach (Object o in obj)
{
d = new Object();
d = o;
list.add(d);
d = null;
}
这只是为了理解忽略语法,或者假设对象在循环中添加到列表中。添加后我们是否可以将其设置为空。仅用于内存优化。
【问题讨论】:
-
在 new 之后,您将通过 new 分配变量 d 获得的引用更改为 o 的引用。因此,您的新产品没用,您可以将其删除。因此你的问题是......?
-
您正在迭代一个空列表 (
obj)。你必须往里面放点东西。 -
只是为了理解上面的loop right或者设置obj=null来处理使用后的对象。就是这样。
-
@DhruvParmar 不,设置
something = null不是处理某物的正确方法。垃圾收集器负责处理它。但是,有些东西,比如 SqlConnection 等,使用垃圾收集器无法影响的非托管资源 - 这些东西需要调用它们的.Dispose()方法。