- 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; } }