C Sharp – die neusten Beiträge

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

C# kann Variable in der selben Klasse nicht benutzen?

Moin,

Bin grad dran einen Launcher zu erstellen und hab eine Funktion gemacht womit man eine Exe Datei wählen kann die als String Variable namens filePath gespeichert wird, wenn ich diese rufen will damit der Launch Button weiß was er starten soll bekomme ich den Error "Der Name "filePath" ist im aktuellen Kontext nicht vorhanden."

Wie kann ich hin bekommen das die Variable von der gesamten Klasse verwendet werden kann?

Code in Frage:

        private void button8_Click(object sender, EventArgs e)
        {
            using (OpenFileDialog openFileDialog = new OpenFileDialog())
            {
                openFileDialog.InitialDirectory = "c:\\";
                openFileDialog.Filter = "Exe Files (.exe)|*.exe"; ;
                openFileDialog.FilterIndex = 2;
                openFileDialog.RestoreDirectory = true;


                if (openFileDialog.ShowDialog() == DialogResult.OK)
                {
                    String filePath = openFileDialog.FileName;
                    textBox1.Text = filePath;
                }
            }
        }


        private void button7_Click(object sender, EventArgs e)
        {
            string WindowsUser = Environment.UserName;
            string GameName = "Game";
            System.Diagnostics.Process.Start($@"C:\Users\{WindowsUser}\AppData\Local\{GameName}\Saved\SaveGames.");
        }


        private void button1_Click(object sender, EventArgs e)
        {
            System.Diagnostics.Process.Start($"{filePath}");
        }
    }
}
Computer, Technik, programmieren, C Sharp, Code, Informatik, Visual Studio

(C#) mariadb MySql Verbindung Fehler?

Moin,

einmal vorweg, es lief einmal. Nach einem Update auf der Datenbank dann aber nicht mehr...

string server = "xxx.xxx.xxx.xxx";
string database = "test2";
string uid = "root";
string password = "PASSWORT";
string connectionString;
connectionString = "SERVER=" + server + ";" + "DATABASE=" +
database + ";" + "UID=" + uid + ";" + "PASSWORD=" + password + ";SslMode=none;";
con = new MySqlConnection(connectionString);

Das ist der Connection String - das Passwort ist natürlich nicht "PASSWORT" und die IP-Adresse ist natürlich auch anders, aber passt.

Ich möchte nun einfach Daten empfangen;

var com = new MySqlCommand("SELECT * FROM levels", con);
con.Open();
var reader = com.ExecuteReader(); << Error

Jedoch springt er beim ExecuteReader(); mit folgender Meldung heraus;

"The given key '8704' was not present in the dictionary."

Habe bereits versucht eine andere Datenbank aufzusetzen - gleicher Fehler mit einem anderen Key.

So sieht eigentlich die Tabelle aus - eine Zeile ist eingefügt. Wie gesagt, es ging einmal - nachdem ich den Datentyp von INT zu BIGINT geändert hatte ging es dann nicht mehr (natürlich bringt das Zurücksetzen auch nichts, habe ja auch mit mehreren Datenbanken getestet).

Die NuGet ist auch Up-To-Date.

Ich verzweifle leider daran - hat jemand eine Idee, woran es liegen könnte?

LG

Bild zum Beitrag
Computer, Technik, programmieren, C Sharp, Datenbank, MySQL, Technologie, MariaDB, Spiele und Gaming

C# FileSystemWatcher Disposed sich von selbst?

Hallo,

warum auch immer, aber mein FileSystemWatcher Disposed sich immer von selbst. Ich benutze eine Console Anwendung (.Net Framework.4.8).

Das komische, ich habe das mal bei Windows Forms benutzt vor 2 Tagen, da lief es wunderbar, warum disposed der sofort in der Console?

log.Info(Path.GetDirectoryName(args[0]));
            try
            {
                using (fileSystemWatcher = new FileSystemWatcher(Path.GetDirectoryName(args[0])))
                {
                    fileSystemWatcher.IncludeSubdirectories = true;
                    fileSystemWatcher.NotifyFilter = NotifyFilters.LastWrite | NotifyFilters.Size | NotifyFilters.Attributes | NotifyFilters.CreationTime;
                    fileSystemWatcher.Filter = "*.js";
                    fileSystemWatcher.Changed += new FileSystemEventHandler(JSChanged);
                    fileSystemWatcher.Disposed += new EventHandler(JSDisposed);
                    fileSystemWatcher.Error += new ErrorEventHandler(JSError);
                    fileSystemWatcher.EnableRaisingEvents = true;
                }
            }
            catch(Exception ex)
            {
                log.Error(ex.Message);
            }

Der Ordnerpfad ist korrekt, das habe ich oben mit log.Info geprüft. Habe ich irgendwas übersehen?

Es wird das fileSystemWatcher.Disposed Event aufgerufen

Danke schon mal im Voraus

Bild zum Beitrag
Computer, programmieren, C Sharp, CS, Visual Studio, .net-Framework

Meistgelesene Beiträge zum Thema C Sharp