tjh*_*in1 1 c# memory-efficient
我想在我的知识中找出一些空白.从这开始.
示例(c#):
List<Person> names = new List<Person>();
Person friend = null;
for(int i = 0; i < 5; i++)
{
friend = new Person();
Person guy = new Person();
guy.name = "Bob" + i;
friend.name = "Bill" + i;
names.Add(guy);
names.Add(friend);
}
Run Code Online (Sandbox Code Playgroud)
这里我在同一个循环中使用了两个Person对象,只是为了节省空间.
我的理解是,每次我实例化朋友时,我都会在内存中重用相同的位置,覆盖现有的Person对象(如果存在).
而每个新的"guy"对象都被分配了一个新的内存位置.
如果这是正确的,请纠正我,如果这是错误的,这意味着使用"朋友"而不是"家伙"更有效.
会不会出现"家伙"更好的情况?它可能取决于构造函数的实现吗?
我的理解是,每次我实例化朋友时,我都会在内存中重用相同的位置,覆盖现有的Person对象(如果存在).
不,事实并非如此.您正在覆盖变量中的先前值- 但这不是对象.这只是对象的引用.还有另一个对列表中对象的引用.对象本身根本不会被覆盖.您创建的每个对象都独立于其他对象.
根据在循环内或循环外声明变量之间的区别,它没有太大区别.有一些差异:
我通常建议在最初需要的地方声明具有最小范围的变量 - 我发现最终会有更清晰的代码.
| 归档时间: |
|
| 查看次数: |
554 次 |
| 最近记录: |