Värden och referens - Value type and reference type
I datorprogrammering kan datatyper delas in i två kategorier: värdetyper och referenstyper . Ett värde av värdetyp är det verkliga värdet. Ett referensvärde är en referens till ett annat värde.
Klassificering per språk
| Språk | Värde typ | Referens typ |
|---|---|---|
| C ++ | booleaner, tecken, heltal, flytpunktsnummer, klasser (inklusive strängar, listor, kartor, uppsättningar, staplar, köer), uppräkningar | referenser, pekare |
| Java | booleaner, tecken, heltal, flytande siffror | matriser, klasser (inklusive oföränderliga strängar, listor, ordböcker, uppsättningar, staplar, köer, uppräkningar), gränssnitt, nollpekare |
| C # | strukturer (inklusive booleaner, tecken, heltal, flytpunktsnummer, fastpunktsnummer, listor, ordböcker, uppsättningar, staplar, köer, valfria), uppräkningar | klasser (inklusive oföränderliga strängar, arrays, tuples, listor, ordböcker, uppsättningar, stackar, köer), gränssnitt, pekare |
| Snabb | strukturer (inklusive booleaner, tecken, heltal, flytpunktsnummer, fastpunktsnummer, muterbara strängar, tuples, muterbara matriser, muterbara ordböcker, muterbara uppsättningar), uppräkningar (inklusive tillval) och användardefinierade strukturer och uppräkningar som komponerar andra värdetyper. | funktioner, stängningar, klasser |
| Pytonorm | klasser (inklusive oföränderliga booleaner, oföränderliga heltal, oföränderliga flytpunktsnummer, oföränderliga komplexa tal, oföränderliga strängar, byte strängar, oföränderliga byte strängar, oföränderliga tuples, oföränderliga intervall, oföränderliga minnesvyer, listor, ordböcker, uppsättningar, oföränderliga uppsättningar, null pekare) | |
| JavaScript | oföränderliga booleaner, oföränderliga flytpunktsnummer, oföränderliga symboler, oföränderliga strängar, odefinierade, prototyper (inklusive listor, nollpekare) | |
| OCaml | oföränderliga tecken, oföränderliga heltal, oföränderliga flytpunktsnummer, oföränderliga tuplar, oföränderliga uppräkningar (inklusive oföränderliga enheter, oföränderliga booleaner, oföränderliga listor, oföränderliga tillval), oföränderliga undantag, oföränderliga formateringssträngar | matriser, oföränderliga strängar, byte strängar, ordböcker (inklusive pekare) |
Boxning och unboxing
Programmeringsspråk som skiljer mellan värdetyper och referenstyper erbjuder vanligtvis en mekanism, kallad boxning , för att slå in några eller alla deras värdetyper i referenstyper. Detta tillåter användning av värdetyper i sammanhang som förväntar sig referenstyper. Den omvända processen (för att packa upp värdetypen) kallas unboxing .