C# Werte aus vererbten Objekten in ArrayList aufrufen?

Guten Tag,

ich bin neu in C# und versuche gerade eine kleine Klasse zum üben zu erstellen, jedoch bin ich auf ein Problem gestoßen, bei dem ich keine Ahnung habe. Ich versuche gerade von objekten, die in einer ArrayList sind, Werte zu entziehen (per selbsterstellter ToString()), aber ich kann dies leider irgendwie nicht. Es kann auch sein, dass das anders ist als in Java.

Ich versuche halt es so wie in Java zu machen, nähmlich: ArrayList[i].ToString() , bekomme aber nichts raus.

            public classes(int hp, String name, int def, int atk)
            {
                this.name = name;
                this.hp = hp;
                this.def = def;
                this.atk = atk;
            }

                        public void setHp(int hp)
            {
                this.hp = hp;
            }
            public void setDef(int def)
            {
                this.def = def;
            }


            public int getHp() 
            {
                return hp;
            }
            public int getAtk()
            {
                return atk;
            }




            public abstract String ToString();


            public abstract void print();


        }
        class Attacker :classes
        {
            public int critrate = 15;
            public int critdmg = 50;
            public int piercing = 0;
            public int hp = 0;
            public int def = 0;
            public int atk = 0;
            public String name = "Guest";


            public Attacker(int hp, int def, int atk, String name, int critrate, int critdmg, int piercing) : base(hp, name, atk, def)
            {
                this.hp = hp;
                this.def = def;
                this.atk = atk;
                this.name = name;
                this.piercing = piercing;
                this.critdmg = critdmg;
                this.critrate = critrate;
            }
            public override void print()
            {
                Console.WriteLine(ToString());
            }
            public override string ToString()
            {
                return "Username: " + name + "\nHp: " + hp + "\nDefense: " + def + "\nDamage: " + atk
                    + "\nPiercechance: " + piercing + "%\nCritdmg: " + critdmg + "\nCritrate: " + critrate + "%"
                    ;
            }


        }


        static void Main(string[] args)
        {
            Attacker d = new Attacker(50, 20, 10, "d", 10, 15, 0);
            Attacker e = new Attacker(100, 30, 5, "e", 2, 3, 2);
            Attacker f = new Attacker(1000, 1, 0, "f", 0, 0, 0);
            Attacker g = new Attacker(2, 0, 100, "g", 20, 200, 10);


            Monsters.Add(d);
            Monsters.Add(e);
            Monsters.Add(f);
            Monsters.Add(g);




            Monsters.ToString();

Ich hab das dann zu Monsters.ToString() umgeändert, jedoch kein Erfolg.

Danke im Vorraus

programmieren, C Sharp
Weitere Inhalte können nur Nutzer sehen, die bei uns eingeloggt sind.