Når det gjelder hvordan variabelen er lagret i RAM, hva er forskjellen mellom "int? X = 0" og "int? X = null"?


Svar 1:

Den nolllable typen vil ha et slags ekstra felt som indikerer om verdien er gyldig. Det ser ut som eksemplet ditt er i C #. I dette tilfellet, int? er kortfattet for System.Nullable . System.Nullable er en generisk type som pakker en T med et ekstra boolfelt, HasValue. Det ekstra boolfeltet vil bli lagret i minnet sammen med lagringsplass for T. Den tilførte syntaks i C # for nullable verdityper skjuler de underliggende handlingene som bruker feltet.

Konseptuelt ser koden slik ut:

int? x = 0; // oversettes til
x verdi = 0;
x.HasValue = true;

int? x = null; // oversette til
x.HasValue = falsk;

I enhver situasjon der alle bitmønstre av en verditype er gyldige, for eksempel heltall, må språket legge til et slags ekstra felt eller indikator for å vise om det er en gyldig verdi eller om variabelen skal behandles som null. I teorien, hvis kompilatoren visste at noen bitmønstre ikke var gyldige verdier, kunne den bruke et av de ugyldige mønstrene for å indikere en nullverdi og ikke bruke noen ekstra lagring. Imidlertid er det sannsynligvis umulig å være umulig, så du kommer til å se en slags ekstra minne som blir brukt.

Nullable Struct (System)


Svar 2:

Det er helt avhengig av hvordan programmeringsspråket implementeres. Det samme språket kan implementeres på mange forskjellige måter, avhengig av maskinvare og spesifikke kompilatorer.

Når det er sagt at variabelen på mange språk identifiserer et spesifikt minneplass der de faktiske dataene er lagret. Hvis variabelen har en verdi, til og med null, vil plasseringen bli satt. Hvis den er null, vil selve stedet bli satt til en meningsløs verdi, null eller på annen måte.


Svar 3:

Det er helt avhengig av hvordan programmeringsspråket implementeres. Det samme språket kan implementeres på mange forskjellige måter, avhengig av maskinvare og spesifikke kompilatorer.

Når det er sagt at variabelen på mange språk identifiserer et spesifikt minneplass der de faktiske dataene er lagret. Hvis variabelen har en verdi, til og med null, vil plasseringen bli satt. Hvis den er null, vil selve stedet bli satt til en meningsløs verdi, null eller på annen måte.


Svar 4:

Det er helt avhengig av hvordan programmeringsspråket implementeres. Det samme språket kan implementeres på mange forskjellige måter, avhengig av maskinvare og spesifikke kompilatorer.

Når det er sagt at variabelen på mange språk identifiserer et spesifikt minneplass der de faktiske dataene er lagret. Hvis variabelen har en verdi, til og med null, vil plasseringen bli satt. Hvis den er null, vil selve stedet bli satt til en meningsløs verdi, null eller på annen måte.


Svar 5:

Det er helt avhengig av hvordan programmeringsspråket implementeres. Det samme språket kan implementeres på mange forskjellige måter, avhengig av maskinvare og spesifikke kompilatorer.

Når det er sagt at variabelen på mange språk identifiserer et spesifikt minneplass der de faktiske dataene er lagret. Hvis variabelen har en verdi, til og med null, vil plasseringen bli satt. Hvis den er null, vil selve stedet bli satt til en meningsløs verdi, null eller på annen måte.