虽然说自己用一个实例是可以尝试结果的,但是还是想问问大神们,list的问题。
定义list<A>,A是引用类型比如说是如下一个class
class B
{}class A
{
public B b;
}
那new了一个list = lista后对lista进行了如下操作:1.如果a是局部变量,是否意味着在退出本function的时候,lista中的该元素实际上用的就是原本局部变量a中占用的内存,只是此时a这个引用指针被删除了?function()
{
   a = new class A();
....关于a的一些赋值
   lista.add(a);
}
2.如果将list中该元素remove,是否意味着即使是在function内部,a也无法使用了?还是说只是lista放弃了对该元素内存的指向,而a还是指向该段数据且数据不变,依旧可以调用的?
function()
{
   a = new class A();
....关于a的一些赋值
   lista.add(a);
   lista.remove(a);}
3.同样,对于list的clear方法,是否意味着a在function中也已经无法使用了?还是依旧能够使用?并且相关数值没有变化?
function()
{
   a = new class A();
....关于a的一些赋值
   lista.add(a);
   lista.clear();}
以上到底是个什么原理捏?大神们 谢谢啦!~~listclass

解决方案 »

  1.   

    lista.remove(a);只是从list移除,但a还是存在的
    list(a),还是可以用a来操作数据,a 的改变也是直接影响到list里面的a
      

  2.   

    1.退出function,如果是这种形式:
    List<ClassA> function()
    {
    ClassA a = new ClassA();
    List<ClassA> list = new List<ClassA>();
    list.Add(a);
    return list;
    }退出后,仍然可以取出a操作。还是要看所谓的“生命周期”的
    2.3一样的,就好比一个鸡蛋放在盒子里,又取出来,这个鸡蛋还是在的。但是如果把盒子都扔到垃圾桶了,鸡蛋也就没了。