Pereiti prie turinio

C# NullReferenceException


Rekomenduojami pranešimai

Vietoj

public static void SpausdintiZieda(Parduotuves par, int juvelyrikosIndeksas) 

reikia

public static void SpausdintiZieda(Parduotuves[] par, int juvelyrikosIndeksas) 

„par“ - yra masyvas.

 

Ir gal dar vietoj

Console.WriteLine("Brangiausias ziedas yra " + par.Title + "parduotuveje"); 

reikia

Console.WriteLine("Brangiausias ziedas yra " + par.Gaminys[juvelyrikosIndeksas]. Title + "parduotuveje"); 

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Ok matau kad reikia zmogui paaiskinti delko kartais per neapsiziurejima yra gaunamas nullReferenceException. Iskarto atsiprasysiu del LT raidziu nenaudojimo, tiesiog man taip taipint greiciau ir penktadieni po 4 alaus jau ar taip ar taip neberupi, o dar + Above & Beyond groja :D vskas ka parasysiu skirta konkreciai C# kalbai.

Taigi:

Kompiuteris turi ramus, ramai turi vadinamaji STACK ir HEAP (na turi dar ir static dali bet apie tai dabar nekalbesiu). C# kalba turi VALUE ir REFERENCE tipus. VALUE tipai gyvena stack atminties(ramu) dalyje ir pati kintamojo reiksme yra saugoma paciame kintamajame, VALUE tipai tai: char, int, uint, long ir t.t (supaprastintai pasakysiu jog tai visi tipai kurie VS uzsiraso melyna spalva by default isskytus string tipa (string tipas yra REFERENCE tipas)). Taigi VALUE tipai yra STUCT tipai o REFERENCE tipai yra klases.

REFERENCE tipai gyvena HEAP atminties dalyje. Kuom jie skirasi nuo VALUE tipu? Isivaizduok turi klase "Employee" ir noredamas sukurti nauja "Employee" tu rasai

var Foo = new Employee();

Kada panaudoji "new" raktazodi tai reiskia, kad tu instancijuoji nauja obijekta kompiuterio ramu atminties HEAP dalyje. Pats "Foo" gyvena STACK dalyje bet jis turi nuoroda i HEAP dalyje easnati "EMPLOYEE" obijekta. Bet kas bus jei mes parasysime:

var Foo = new Employee();
var Bar = foo;

 

Patys Foo ir Bar gyvens STACK dalyje bet jie abu tures nuoroda i HEAP dalyje esanti tapati EMPLOYEE obijekta. Todel jei jei Pvz: Employee turetu property FirstName, pakeite ji Foo kintamajame, matytume si pakeitima ir Bar kintamajame. Kodel? Nes jie abu pointina i tapati obijekta HEAP dalyje.

 

Taigi ka visa tai reiskia tavo atveju?

Jei gu tu bandai patikrinti REFERENCE tipa kuris nera instancijuotas HEAP dalyje tu gauni nullReferenceException, del ko? Delto kad STACK dalyje esantis kintamasis i nieka nepointina.

 

Cia parasiau supaprastines, bet esme yra tokia.

 

Na o dabar atsipalaiduojam :o

https://www.youtube.com/watch?v=bdi_XfNNlzU

Redagavo highontrance
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Prisijunkite prie diskusijos

Jūs galite rašyti dabar, o registruotis vėliau. Jeigu turite paskyrą, prisijunkite dabar, kad rašytumėte iš savo paskyros.

Svečias
Parašykite atsakymą...

×   Įdėta kaip raiškusis tekstas.   Atkurti formatavimą

  Only 75 emoji are allowed.

×   Nuorodos turinys įdėtas automatiškai.   Rodyti kaip įprastą nuorodą

×   Jūsų anksčiau įrašytas turinys buvo atkurtas.   Išvalyti redaktorių

×   You cannot paste images directly. Upload or insert images from URL.

Įkraunama...
  • Dabar naršo   0 narių

    Nei vienas registruotas narys šiuo metu nežiūri šio puslapio.

  • Prisijunk prie bendruomenės dabar!

    Uždarbis.lt nariai domisi verslo, IT ir asmeninio tobulėjimo temomis, kartu sprendžia problemas, dalinasi žiniomis ir idėjomis, sutinka būsimus verslo partnerius ir dalyvauja gyvuose susitikimuose.

    Užsiregistruok dabar ir galėsi:

    ✔️ Dalyvauti diskusijose;

    ✔️ Kurti naujas temas;

    ✔️ Rašyti atsakymus;

    ✔️ Vertinti kitų žmonių pranešimus;

    ✔️ Susisiekti su bet kuriuo nariu asmeniškai;

    ✔️ Naudotis tamsia dizaino versija;

    ir dar daugiau.

    Registracija trunka ~30 sek. ir yra visiškai nemokama.

  • Naujausios temos

  • Karštos temos

×
×
  • Pasirinkite naujai kuriamo turinio tipą...