Hvad er variablen gemt i RAM, hvad er forskellen mellem "int? X = 0" og "int? X = null"?


Svar 1:

Den nullable type vil have en slags ekstra felt, der angiver, om værdien er gyldig. Det ser ud til, at dit eksempel er i C #. I dette tilfælde int? er kortfattet for System.Nullable . System.Nullable er en generisk type, der omslutter en T med et ekstra boolfelt, HasValue. Det ekstra boolfelt gemmes i hukommelsen sammen med lageret for T. Den tilføjede syntaks i C # for nullable-værdityper skjuler de underliggende handlinger, der bruger feltet.

Konceptuelt ser koden sådan ud:

int? x = 0; // oversættes til
x værdi = 0;
x.HasValue = sandt;

int? x = null; // oversætte til
x.HasValue = falsk;

I enhver situation, hvor alle bitmønstre af en værditype er gyldige, for eksempel heltal, skal sproget tilføje en form for ekstra felt eller indikator for at vise, om der er en gyldig værdi, eller om variablen skal behandles som null. I teorien, hvis kompilatoren vidste, at nogle bitmønstre ikke var gyldige værdier, kunne den bruge et af de ugyldige mønstre til at indikere en nullværdi og ikke bruge nogen ekstra lagerplads. I praksis er det dog sandsynligvis umuligt, så du altid ser en slags ekstra hukommelse, der bruges.

Nullable Struct (System)


Svar 2:

Det afhænger helt af, hvordan programmeringssprog implementeres. Det samme sprog kan implementeres på mange forskellige måder afhængigt af hardware og specifikke compilere.

Når det er sagt, identificerer variablen på mange sprog en bestemt hukommelsesplacering, hvor de faktiske data er gemt. Hvis variablen har en værdi, ja nul, indstilles placeringen. Hvis den er null, indstilles selve placeringen til en meningsløs værdi, nul eller på anden måde.


Svar 3:

Det afhænger helt af, hvordan programmeringssprog implementeres. Det samme sprog kan implementeres på mange forskellige måder afhængigt af hardware og specifikke compilere.

Når det er sagt, identificerer variablen på mange sprog en bestemt hukommelsesplacering, hvor de faktiske data er gemt. Hvis variablen har en værdi, ja nul, indstilles placeringen. Hvis den er null, indstilles selve placeringen til en meningsløs værdi, nul eller på anden måde.


Svar 4:

Det afhænger helt af, hvordan programmeringssprog implementeres. Det samme sprog kan implementeres på mange forskellige måder afhængigt af hardware og specifikke compilere.

Når det er sagt, identificerer variablen på mange sprog en bestemt hukommelsesplacering, hvor de faktiske data er gemt. Hvis variablen har en værdi, ja nul, indstilles placeringen. Hvis den er null, indstilles selve placeringen til en meningsløs værdi, nul eller på anden måde.


Svar 5:

Det afhænger helt af, hvordan programmeringssprog implementeres. Det samme sprog kan implementeres på mange forskellige måder afhængigt af hardware og specifikke compilere.

Når det er sagt, identificerer variablen på mange sprog en bestemt hukommelsesplacering, hvor de faktiske data er gemt. Hvis variablen har en værdi, ja nul, indstilles placeringen. Hvis den er null, indstilles selve placeringen til en meningsløs værdi, nul eller på anden måde.