Neuling Coder hier. Ich arbeite an einem Spiel von Yahtzee, kann aber nicht herausfinden, warum ich diesen Fehler bekomme (Objektreferenz nicht auf Instanz des Objekts gesetzt), wenn ich es bereits korrigiert habe. Mein 'Formular'-Objekt ist NULL, obwohl ich im Klassenkonstruktor eine Instanz davon deklariert habe und eine grüne Zeile, die besagt, dass es nicht verwendet wird, erscheint.Objektverweis nicht auf eine Instanz eines Objekts gesetzt? Aber es ist? C#
public partial class Form1: Form {
public Form1() {
InitializeComponent();
}
private Game game;
public void ShowMessage(string message) {
lblMessage.Text = message;
}
public void StartNewGame() {
game = new Game(this);
}
private void btnRoll_Click(object sender, EventArgs e) {
game.RollDice();
}
class Game {
private Form1 form;
public Game(Form1 form) {
form = new Form1();
}
public void RollDice() {
form.ShowMessage("blahblah");
}
Der Fehler "NullReferenceException" erscheint über form.ShowMessage und ich weiß nicht warum. Ich habe im Spielkonstruktor eine neue Instanz der Formklasse deklariert, die ausgeführt wird, wenn der Spieler StartNewGame auswählt, das die StartNewGame-Methode ausführt. Der einfachste Weg, um es zum Laufen zu bringen, ist einfach "Form1 form" zum Parameter der RollDice() -Methode in der Game-Klasse hinzuzufügen und dann game.RollDice (this) im Form1-Event-Handler. Aber die Anleitung für die Zuweisung besagt, dass wir das nicht tun sollten und wir das Form1-Objekt im Konstruktor von Game initialisieren sollen. Bitte helfen Sie mir, ich bin neu und kann nicht verstehen, warum das passiert.
Wo/Wann rufen Sie die 'StartNewGame' Methode auf? – Nikola