Hogyan tudnám ezt megcsinálni? Kiírja a hibát: "Az objektumhivatkozás nincs beállítva egyetlen objektumpéldányra sem. "
Egy Total War-hoz hasonló UI-t akarok csinálni(csak gyakorlásként, mert a szöveges szerepjátékban elakadtam).
Annyit csinál, hogy megjeleníti a Városokat, ha rákattintok egyre, mutatja az adatait és az Épületeket. A Város és az Épület is osztályban van létrehozva.
Ebben a kódban történik, hogy ha rákattintok erre a gombra, akkor mutatja az Épületeket, amiket lehet építeni. Úgy akarom megcsinálni, hogy ha az épületre a listbox-ból rákattintok, akkor elkezdi építeni.
listBoxÉpités.Items.Clear();
if (kiválasztottVáros.ÉpitettÉpületek.Contains(Világ.ÉpületByID(Világ.ÉP_FöldÚT))==false && kiválasztottVáros.ÉpitettÉpületek.Contains(Világ.ÉpületByID(Világ.ÉP_BetonÚT)) == false)
{
épitendőÉpület = Világ.ÉpületByID(Világ.ÉP_FöldÚT);
épitendőépIDk.Add(épitendőÉpület.ID);
listBoxÉpités.Items.Add(épitendőÉpület.Név + " "+ épitendőÉpület.Ár+ " arany "+ épitendőÉpület.Építidő + " kör építési idő" );
}
}
Ha rákattintok a gombra mindig ezt a hibát írja ki.
Ez van a programom elején:
private Épület épitendőÉpület;
public static Épület földút = Világ.ÉpületByID(Világ.ÉP_FöldÚT);
Kezdd azzal, hogy az ékezeteket kiveszed a változók neveiből.
Az if()-nél nem igazán értem, hogy mit szeretnél vizsgálni? A Contains azt csinálja, hogy megvizsgálja a stringet szerepel-e benne a kért szövegrész. Nálad viszont egy logikai feltétel van a keresendő szó helyén, ennek így mi értelme van (lehet, hogy van értelme, de hirtelen nem látom)?
A program többi részének értelmezéséhez ismerni kellene a teljes programot.
#2 Nem a Containsben nincs semmiféle feltétel. Egy függvényhívásvan amely egy épületet kérdez le id alapján ha jól sejtem. A contains nem csak stringen lehet használni hanem minden olyan objektumon amely megvalósítja az IEnumerable interface-t. És jelen esetben ez teljesen helyes használat.
Kérdező. Sajnos ez alapján a kódrészlet alapján nem lehet megmondani mi lehet a hiba okozója. Osszd meg a teljes kódot.
Tipp: Használd a debuggert bátran. Látod hogy hol száll el a program. Az elé rakj be egy breakepointot. Ha f10-el tudod lépésről lépésre továbbfuttatni a kódot. Ha ráviszed az egeret a változókra ki fogja írni az aktuális értékét. Jelen esetben azt kell keresned amelyik null. Az a hiba okozója.
"Az objektumhivatkozás nincs beállítva egyetlen objektumpéldányra sem. "
Ez akkor szokott lenni, amikoe olyan objektumra hivatkozol, ami nem létezik.
Akkor nincs inicializálva a listád. Ahol létre hozod ott inicializáld is.
Ha pl int a típusa akkor így:
List<int> épitendőépIDk = new List<int>();
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!