当前位置: 代码迷 >> ASP.NET >> 问个引用类型的有关问题
  详细解决方案

问个引用类型的有关问题

热度:8799   发布时间:2013-02-25 00:00:00.0
问个引用类型的问题。
C# code
    class Program    {        static void Main(string[] args)        {            List<Person> list = new List<Person>();            Get(list, 1);                        Console.ReadLine();        }        static void Get(List<Person> list, int i)        {            if (i == 3)                return;            if (list == null)                list = new List<Person>();            Person p = new Person();            p.ID = i;            list.Add(p);                        Get(p.list, ++i);        }    }    class Person    {        public int ID { get; set; }        public List<Person> list { get; set; }    }

list.Add(p);这句把p添加到集合中,然后在把p.list继续添加,可是为什么添加不到集合中去呢?
而如果先实例化在传进去就可以,为什么呢?
 p.ID = i;
 list.Add(p);  
p.list = new List<Person>(); 


------解决方案--------------------------------------------------------
看错了。

你应该传Person对象。

引用类型(除了string)加不加ref out没差别吧
当然有差别,前者传值(引用),后者传引用(引用的引用)
------解决方案--------------------------------------------------------
如果不加ref,要这样写:
C# code
    class Program    {        static void Main(string[] args)        {            List<Person> list = new List<Person>();            Get(list, 1);                        Console.ReadLine();        }        static void Get(List<Person> list, int i)        {            if (i == 3)                return;            Person p = new Person();            p.ID = i;            list.Add(p);               p.list= new List<Person>();            Get(p.list, ++i);        }    }    class Person    {        public int ID { get; set; }        public List<Person> list { get; set; }    }
  相关解决方案