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
ASCII Art in der Konsole ausgeben [C#]?

Guten Abend! Ich versuche seit einigen Tagen ein byte array in der Konsole auszugeben, was dann später "C#" als kleines Artwork in der Konsole ausgegeben wird. Ich weiß aber nicht, wie ich

a) mein Ganzes byte Array ausgeben lasse (er gibt nicht das vollständige array in der Konsole aus warum auch immer) und:

b) wie ich die Zahlen im array zu Zeichen zuweisen kann (sprich Leerzeichen, C und #) damit es das C# "artwork" in der cmd zeigt.

Wo liegen meine Fehler? Wenn möglich bitte mit Beispielen.

using System;
using System.IO;

namespace ESA_2
{
   class Program
   {
       public void ESAIn(string Path)
       {
           byte[] array = { 32, 32, 67, 67, 32, 32, 32, 35, 32, 35, 32,
                           32, 67, 32, 32, 67, 32, 32, 35, 32, 35, 32,
                           67, 32, 32, 32, 32, 32, 35, 35, 35, 35, 35,
                           67, 32, 32, 32, 32, 32, 32, 35, 32, 35, 32,
                           67, 32, 32, 32, 32, 32, 35, 35, 35, 35, 35,
                           32, 67, 32, 32, 67, 32, 32, 35, 32, 35, 32,
                           32, 32, 67, 67, 32, 32, 32, 35, 32, 35, 32 };

           //Anhand der ASCII Code Tabelle lassen sich 32 zu Leerzeichen, 67 zu C
           // und die 35 zu # Zeichen Übersetzen, was, wenn wir die Ausgabe
           //umstrukturieren, eine 'C#' in der Konsole ausgibt


           FileStream stream = File.Open(Path, FileMode.Truncate, FileAccess.ReadWrite);


           stream.Write(array, 0, array.Length);
           stream.Close();
       }
       public void ESAOut(string Path)
       {
           BinaryReader reader = new BinaryReader(File.Open(Path, FileMode.Open));
           var count = 0;
           for (int i = 0; i < reader.ReadByte(); i++)
           {
               count++;
               Console.Write("{0} ", reader.ReadByte());
               if (count == 11)
               {
                   Console.Write("\n");
                   count = 0;
               }
           }
           reader.Close();
           Console.WriteLine();
       }
       static void Main(string[] args)
       {
           string Path = @"C:\Users\Dean Aleksander\source\repos\ESA_2\ESA_2\ESA02.txt"; ;
           Program test = new Program();
           test.ESAIn(Path);
           test.ESAOut(Path);
           Console.ReadLine();
       }
   }
}

Die Aufgabenstellung: "Schreiben Sie eine Methode „ESA2In“ in einem neuen Projekt „ESA_2“, mit der dieses Array in eine in Ihrem Projektmappenordner anzulegende Datei „ESA2.txt“ gespeichert werden kann. Schreiben Sie sodann eine weitere Methode „ESA2Out“, mit der dieses Array aus der Datei ausgelesen und auf Konsole ausgegeben werden kann. Die Konsolenausgabe soll in sieben Zeilen mit jeweils elf Zeichen gegliedert werden – dies entspricht auch der vorstehenden Anordnung der Array-Elemente. Beachten Sie aber, dass eine Zeile im Array aus 33 Zeichen besteht – Ihre Konsolenausgabe soll hingegen elf Zeichen umfassen. "

Computer, Schule, C Sharp, Informatik, Visual Studio

Meistgelesene Beiträge zum Thema C Sharp