如何将List <t> include项作为变量引用(ref item)?

时间:2015-10-31 06:05:52

标签: c#

假设我们有一些代码

public class A { }

public class B : A { }

static void Main(string[] args)
{
    A a1 = new A();
    A a2 = new A();
    A a3 = new A();
    Process(ref a1);
    Console.WriteLine(a1.GetType().Name == "B"); // show True : that i want
    List<A> list = new List<A>();
    list.Add(a2);
    list.Add(a3);
    ProcessList(ref list);
    Console.WriteLine(a2.GetType().Name == "B"); // False : I want True
    Console.WriteLine(a3.GetType().Name == "B"); // False : I want True
    Console.Read();
}

static void ProcessList(ref List<A> list)
{
    for (int i = 0; i < list.Count; i++)
    {
        list[i] = new B();
    }
}

static void Process(ref A item)
{
    item = new B();
}

如ProcessA方法中标记为 ref ,我可以将调用者(Main)的A类型变量对象更改为B类型。但就像那样,当我想处理 ProcessList 中的A列表时,我无法将A类型的调用者(Main)变量对象变为B类型

似乎List<T>确实通过引用传递了它的项目;或者我该如何实现这一目标?

0 个答案:

没有答案