Kezdőoldal » Számítástechnika » Programozás » Hogyan tudnám ezt megcsinálni?...

Hogyan tudnám ezt megcsinálni? Kiírja a hibát: "Az objektumhivatkozás nincs beállítva egyetlen objektumpéldányra sem. "

Figyelt kérdés

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);



2020. febr. 27. 13:56
 1/9 A kérdező kommentje:
Ja és a "KiválasztottVáros" is Város típusú.
2020. febr. 27. 14:01
 2/9 anonim ***** válasza:
100%

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.

2020. febr. 27. 14:20
Hasznos számodra ez a válasz?
 3/9 A kérdező kommentje:
Az if-nél meg akarom vizsgálni, hogy van-e Földút vagy Betonút a városban. Ha nincs, akkor Földutat lehet építeni, azok jelennek meg.
2020. febr. 27. 14:35
 4/9 anonim ***** válasza:

#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.

2020. febr. 27. 14:39
Hasznos számodra ez a válasz?
 5/9 A kérdező kommentje:
Azt is írta, hogy épitendőépIDk=null.
2020. febr. 27. 14:44
 6/9 anonim ***** válasza:
#4: Ja, tényleg. Annyira összefolynak a szavak és a zárójelek, hogy azt hittem a Contains() mindkét sort magában foglalja.
2020. febr. 27. 14:57
Hasznos számodra ez a válasz?
 7/9 anonim ***** válasza:

"Az objektumhivatkozás nincs beállítva egyetlen objektumpéldányra sem. "


Ez akkor szokott lenni, amikoe olyan objektumra hivatkozol, ami nem létezik.

2020. febr. 27. 15:31
Hasznos számodra ez a válasz?
 8/9 anonim ***** válasza:
Ez így most egy összevisszaság. Látni kéne a teljes kódot és legalább az UML-t, hogy ne kelljen keresgélni mi-mi.
2020. febr. 27. 15:33
Hasznos számodra ez a válasz?
 9/9 anonim ***** válasza:

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>();

2020. febr. 27. 16:12
Hasznos számodra ez a válasz?

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

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!