Adding multiple children at multiple levels with a loop and clean code

I have a C # class that can contain multiple children at multiple levels.

Adding children manually will look something like this:

CustomClass MyClass = new CustomClass("something", new List<CustomClass>()); //Level 1 MyClass.Children.Add("something", new List<CustomClass>()); //Level 2 MyClass.Children[0].Children.Add("something", new List<CustomClass>()); //Level 3 MyClass.Children[0].Children[0].Children.Add("something", new List<CustomClass>()); 

How would I do this with a clean loop? Performing this, I do not feel "right":

 for (var i = 0; i < 50; i++) { //Level 1 if (i == 0) MyClass.Children.Add("something", new List<CustomClass>()); //Level 2 if (i == 1) MyClass.Children[0].Children.Add("something", new List<CustomClass>()); //Level 3 if (i == 2) MyClass.Children[0].Children[0].Children.Add("something", new List<CustomClass>()); // and so on up to 50 levels in this case ... } 

IMPORTANT UPDATE: at each level I need to check if an existing value exists, if it is not, I add it.

Thank you for listening!

I am a beginner, so please be careful.

+4
source share
1 answer

You can do this recursively:

 void FillChildren(CustomClass lastChild, int levels) { if(levels > 0) { CustomClass child = new CustomClass("something", new List<CustomClass>()); FillChildren(child, levels-1); lastChild.Children.Add("something", child); } } 

What would you call so:

 CustomClass MyClass = new CustomClass("something", new List<CustomClass>()); FillChildren(MyClass, 50); 
+9
source

All Articles