Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Efficient way to pass large number of argments into a constructor

Tags:

c#

I am working on a project and I have an object, upon instantiation of which, will have a large number of values (20+) passed into it. I know I could make a constructor that would take in all of the values, but I am looking for a cleaner / more efficient way to do this.

Just to put this in perspective, the object is a character in a game, new instances of which are frequently created. The values assigned are attributes which are randomly generated.

Is a constructor with a large number of arguments the best way to go? Or is there a better way to do this that I don't know about? Any advice would be greatly appreciated.

EDIT: When a new game starts, a List<Character> is created and a for loop creates 10 instances of character and adds them to the list.

like image 332
Jason D Avatar asked Nov 30 '25 11:11

Jason D


1 Answers

You can create a call that defines your game character. have users populate that class and pass it as the argument to your class.

something like this,

public class CharecterInfo
{ 
       public string Name {get;set;}
       public int Power {get;set;}
       public int Health{get;set;}
}

public class Charecter
{ 
     public Charecter(CharecterInfo charecterInfo)
     {
        //import values
     }
}

I would avoid using public properties, since your class could be used while it's not properly initialized (in a bad state) which is the job of the constructor. you should use a constructor and validate the input before allowing the user to continue.

like image 71
kay.one Avatar answered Dec 02 '25 23:12

kay.one



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!