Löschen Sie ein instanziiertes Objekt in C#C#

Ein Treffpunkt für C#-Programmierer
Guest
 Löschen Sie ein instanziiertes Objekt in C#

Post by Guest »

Ich versuche, ein Spiel für ein Projekt zu erstellen (ich verwende Visual Studio und eine Windows Forms-App, die auf dem .NET Framework ausgeführt wird).
Ich möchte löschen können eine Kugel, nachdem sie eine Wandkomponente berührt hat:

Code: Select all

private void bullet_Tick(object sender, EventArgs e)
{
foreach (Bullet bullet in BulletList)
{
foreach(var wall in wallList)
{
if (bullet.BulletPictureBox.Bounds.IntersectsWith(wall.Bounds))
{
// method to destroy the bullet object
}
}
}
}
Ich habe Methoden wie „Dispose“ ausprobiert, aber das scheint nur die Picturebox zu entfernen, wodurch die Kugel unsichtbar wird, aber dennoch Wände durchdringen kann. Ich habe es mit „bullet = null;“ versucht, aber ich erhalte eine Fehlermeldung

Zuweisung zu „Bullet“ nicht möglich, da es für jede Variableniteration ein Wert ist

was meiner Meinung nach daran liegt, dass foreach eine schreibgeschützte Methode ist.
Ich habe mich gefragt, ob das so ist eine Methode, die ich übersehen habe, oder ob ich aufhören muss, die Methode foreach zu verwenden (I Ich weiß, ich hätte es durch die Verwendung von Tags einfacher machen können. Oder ob ich innerhalb meiner eigentlichen Bullet-Klasse etwas ändern muss:

Code: Select all

public class Bullet
{
public PictureBox BulletPictureBox { get; private set; }

string DREC;

public Bullet(Form form, int x, int y, List BulletList, string direction)
{
BulletPictureBox = new PictureBox
{
Size = new Size(10, 10),
BackColor = Color.Red,
Location = new Point(x, y)
};

DREC = direction;

form.Controls.Add(BulletPictureBox);
BulletList.Add(this);
}

public string GetDirection()
{
return DREC;
}
}

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post