Diskuze: Odkazování na jednu třídu vícekrát
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Tvůrce
Zobrazeno 17 zpráv z 17.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Nezkusil sis to
hra.Zobraz();
spustit v Try-Catch a ošetřit vyjímku? Přeci to neumře jen tak bez chyby...
On nedělá problém to hra.Zobraz();, ale přímo to
Hra hra = new Hra();
Jde to jenom v klasickým Program.cs, když na Hra.cs odkazuji z jiných .cs souborů, program okamžitě spadne.
Pak máš asi něco špatně přímo na té třídě, zkus si "otry-catchovat" to vytváření instance, co to napíše a dej sem ten kód z té třídy Hra, ať se můžeme mrknout...
A nechces zkusit tu tridu Hra predat v konstruktoru te tride, ve ktere ji budes potrebovat?
Samozrejme jsem myslel predat referenci, nikoliv samotnou tridu...
Jak jsi to myslel? Co bych měl přesně udělat (A jak)?
Ať jsem zkoušel co jsem zkoušel, nejde to...
Spust si program v Debug rezime, a po "zdochnuti" programu by si mal dostat
hlasku, preco prg. zdochol;
Tak, ako to popisujes, Ti nikto nepovie nic presne, lebo nepozname Tvoj
program.
Takze: <Start Debugging> ... <F5>, pripadne si nastav Breakpoint na riadok alebo aj za riadok, kde Ti to dochne.
Ak budes mat popis chyby, potom Ti tu urcite niekto pomoze.
Taková rejpavá: Máš tu třídu Hra.cs nastavenou jako "public", že?
Napiš sem co máš v konstruktoru třídy. Zatím to na mě působí, že tam děláš cosi co způsobuje problém když to uděláš vícekrát než jednou. Je tedy možné že to padání aplikace nesouvisí s vytvořením instance tvé třídy jako takové, ale s tím co se děje v konstruktoru.
//Tuto tridu chces pouzit v jine tride
public class Clovek
{
private string jmeno;
public Clovek(string jmeno)
{
this.jmeno = jmeno;
}
public void Pozdrav()
{
Console.WriteLine("Ahoj, ja jsem " + jmeno);
}
}
public class Hra
{
private Clovek clovek;
public Hra(Clovek clovek)
{
this.clovek = clovek;
}
public void PredstaveniLidi()
{
clovek.Pozdrav();
}
}
public class Program
{
static void Main(string[] args)
{
Clovek petr = new Clovek("Petr");
Hra novaHra = new Hra(petr);
novaHra.PredstaveniLidi();
Console.ReadKey();
}
}
Ale jak radili tady ostatni, bud pouzij debugger a nebo sem prskni tvuj kod...
Jo, už to jede, nějak jsem to opravil
Moc vám všem děkujiiii
Prostě jsem tam měl z toho všeho Hra hra = new Hra() atd. cyklus. Tak jsem prostě přepsal všechno kromě Hra.cs tak, aby to nemuselo využívat věci (např. proměnný) z Hra.cs . Ne že bych to přímo vyřešil, ale už to nedělá problém
Zobrazeno 17 zpráv z 17.