Diskuze: Null Reference u nového objektu (C#)

C# .NET .NET (C# a Visual Basic) Null Reference u nového objektu (C#) American English version English version

Avatar
Theodor Johnson
Redaktor
Avatar
Theodor Johnson:

Ahoj, znovu se na vás obracím s menším problémem, při pokusu o vytvoření nového objektu mi program vyhodí chybu, viz. screenshot

http://screenshot.cz/…eference.png

Odpovědět 16.4.2014 19:39
Přecházím na "Cross-Platform Development"
Avatar
hanse
Člen
Avatar
Odpovídá na Theodor Johnson
hanse:

Místo abys definoval Game1 jako statický atribut třídy, zkus:

Game1 game = new Game1()
 
Nahoru Odpovědět 16.4.2014 19:44
Avatar
Theodor Johnson
Redaktor
Avatar
Odpovídá na hanse
Theodor Johnson:

Stejný problém, původně byla chyba označována v konstruktoru Game1 (i prázdném) pak jsem kostruktor odstranil a je přímo v Program.cs

Nahoru Odpovědět 16.4.2014 19:46
Přecházím na "Cross-Platform Development"
Avatar
Paradise
Redaktor
Avatar
Paradise:

Víš jak funguje static? :) Inicializuje se to automaticky při spuštění.

 
Nahoru Odpovědět 16.4.2014 19:56
Avatar
coells
Redaktor
Avatar
Odpovídá na Theodor Johnson
coells:

Podle všeho se ta výjimka vyhodí během inicializace třídy.

  1. V okně, které máš na screenshotu, klikni na "View detail..." a tam se přes "Inner Exception" proklikej až k řádce, kde se to stane.

nebo

  1. než začneš debugovat ve studiu, zmačkni ctrl-alt-E a v levém sloupci si nech chytat všechny manageované výjimky (2. řádek, myslím), pak to spusť a studio by se mělo zastavit na přesném místě, kde k výjimce dojde
 
Nahoru Odpovědět 16.4.2014 20:03
Avatar
coells
Redaktor
Avatar
Odpovídá na Paradise
coells:

Nikdo neví, jak v C# funguje static, takže je lepší to slovo moc nepoužívat.

 
Nahoru Odpovědět 16.4.2014 20:04
Avatar
Theodor Johnson
Redaktor
Avatar
Odpovídá na Paradise
Theodor Johnson:

Vím. Původně bylo v souboru vygenerováno

using (Game1 game = new Game1())
{
    game.Run();
}

ale to taky nefunguje

Nahoru Odpovědět 16.4.2014 20:04
Přecházím na "Cross-Platform Development"
Avatar
Theodor Johnson
Redaktor
Avatar
Odpovídá na coells
Theodor Johnson:

InnerException je null, takže se nemám kam proklikat

Nahoru Odpovědět 16.4.2014 20:08
Přecházím na "Cross-Platform Development"
Avatar
coells
Redaktor
Avatar
Odpovídá na Theodor Johnson
coells:

V tom případě je to ve statickém inicializéru třídy. Udělej postup, který jsem popsal ve (2).

 
Nahoru Odpovědět 16.4.2014 20:12
Avatar
Theodor Johnson
Redaktor
Avatar
Odpovídá na coells
Theodor Johnson:

To jsem taky zkoušel a zastaví se to na stejném řádku se stejnou chybou. Dokud třída Game1 dědí z Microsoft.Xna­.Framework.Ga­me tak chyba nastane vždy...

Nahoru Odpovědět 16.4.2014 20:15
Přecházím na "Cross-Platform Development"
Avatar
coells
Redaktor
Avatar
Odpovídá na Theodor Johnson
coells:

Hmm, není nad nativní kód :-) Nejspíš špatně inicializuješ něco okolo XNA. Občas nezbývá, než zakomentovat co největší kus kódu a po částech zkoušet, která část způsobí chybu.

 
Nahoru Odpovědět 16.4.2014 20:30
Avatar
Theodor Johnson
Redaktor
Avatar
Odpovídá na coells
Theodor Johnson:

Chyba

public class Game1 : Game
{

}

V pořádku

public class Game1 //: Game
{

}

Třída Game je přímo v knihovnách SharpDx takže s tím asi nic nenadělám...

Nahoru Odpovědět 16.4.2014 20:33
Přecházím na "Cross-Platform Development"
Avatar
coells
Redaktor
Avatar
Odpovídá na Theodor Johnson
coells:
  1. může se bít verze knihoven, zvlášť pokud používáš NUGet
  2. jsi si jistý, že prázdná třída je správně? není potřeba něco inicializovat?
  3. zkus si z internetu stáhnout nějaké zdrojáky ukázkové aplikace a začni s tím
 
Nahoru Odpovědět 16.4.2014 20:39
Avatar
Theodor Johnson
Redaktor
Avatar
Odpovídá na coells
Theodor Johnson:

Už si ani nevspomínám jestli to bylo součástí monogame nebo jsem to někde stáhl. Jo, prázdná třída je správně, žádná chyba, program se jen spustí, neudělá nic a zase se ukončí.

Nahoru Odpovědět 16.4.2014 20:41
Přecházím na "Cross-Platform Development"
Avatar
Petr Nymsa
Redaktor
Avatar
Odpovídá na Theodor Johnson
Petr Nymsa:

Snažím se tu celou dobu vzpomenout jak jsem to vyřešil - měl jsem jednou podobný problém. Snad si vzpomenu a dám vědět

Nahoru Odpovědět 16.4.2014 20:45
Pokrok nezastavíš, neusni a jdi s ním vpřed
Avatar
Theodor Johnson
Redaktor
Avatar
Odpovídá na coells
Theodor Johnson:

Díky, ale to není v Xna... SharpDx má akorát stejně pojmenované knihovny aby bylo snažší přepsat projekt z Xna do SharpDx

Nahoru Odpovědět 16.4.2014 20:46
Přecházím na "Cross-Platform Development"
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 17 zpráv z 17.