Typer

En typ är en klassificering av data som används för att bestämma vilken typ av värde en variabel kan lagra. I C# finns det två typer av typer: värdestyper och referenstyper.

Värdestyper

Här är en lista över några vanliga värdetyper i C# tillsammans med deras beskrivning, minsta värde, högsta värde, datalagring och storlek i minnet:

KategoriTypBeskrivningMinstaHögstaLagrarStorlek 
PrimitivboolBooleskt värdeFalseTrueBooleskt värde1 byte 
Primitivchar16-bitars Unicode-tecken‘\0’‘\uFFFF’Unicode-tecken2 byte 
Primitivbyte8-bitars heltal0255Heltal1 byte 
Primitivsbyte8-bitars heltal (signerat)-128127Heltal1 byte 
Primitivshort16-bitars heltal-3276832767Heltal2 byte 
Primitivushort16-bitars heltal (osignerat)065535Heltal2 byte 
Primitivint32-bitars heltal-21474836482147483647Heltal4 byte 
Primitivuint32-bitars heltal (osignerat)04294967295Heltal4 byte 
Primitivlong64-bitars heltal-92233720368547758089223372036854775807Heltal8 byte 
Primitivulong64-bitars heltal (osignerat)018446744073709551615Heltal8 byte 
Primitivfloat32-bitars flyttal med enkels precision-3.4028235E+383.4028235E+38Flyttal4 byte 
Primitivdouble64-bitars flyttal med dubbel precision-1.79769313486232E+3081.79769313486232E+308Flyttal8 byte 
Primitivdecimal128-bitars decimaltal-7922816251426433759354395033579228162514264337593543950335Decimaltal16 byte 
AbstraktenumUppräkningsvärde--HeltalVarierar 
ReferenstypstringTextsträng--TextsträngVarierar 
ReferenstypobjectBasobjekt förAlla andra objekt--Alla objektVarierar
Pekare-Pekare till minnesadresser--Minnesadresser4 byte på 32-bitars system, 8 byte på 64-bitars system 

Observera att…

  • Storleken för referenstyper och objekt varierar beroende på implementationen och plattformen (32-bitars eller 64-bitars).
  • Storleken som anges i tabellen är bara en generell indikation.
  • Storleken i minnet kan variera beroende på den faktiska implementationen och plattformen.
  • Värdestyper lagras i stacken och referenstyper lagras i heapen.

Stack och heap

Tänk dig att du har en leksakslåda där du kan placera olika saker. Lådan har två delar: en övre del som kallas “stacken” och en nedre del som kallas “heapen”.

Stacken är som en hög med pappersark. Du kan bara lägga till eller ta bort saker längst upp på högen. När du lägger till något, placerar du det överst på högen och när du tar bort något tar du det översta pappersarket. Det är snabbt och enkelt att lägga till eller ta bort saker från stacken eftersom du alltid arbetar med det översta pappersarket. I programmering används stacken för att hantera små bitar av information som behövs direkt och temporärt. Till exempel kan variabler och funktioner placeras på stacken. När en funktion anropas lägger vi till information om den funktionen längst upp på stacken. När funktionen är klar tas den översta informationen bort och vi fortsätter där vi slutade.

Heapen är som en stor lekyta där du kan placera större saker. Du kan lägga till och ta bort saker var som helst på lekytan. När du placerar något i heapen behöver du inte oroa dig för att det ska vara längst upp eller längst ned. Du kan placera det var som helst där det finns plats. Men när du vill ta bort något från heapen måste du veta exakt var det är och ta bort det därifrån. I programmering används heapen för att hantera större bitar av information och data som kan vara mer permanenta. Till exempel kan objekt och datastrukturer placeras i heapen. De kan vara större och behöva mer plats, och vi kan komma åt dem och använda dem från olika delar av programmet.

Så sammanfattningsvis, stacken är som en hög med pappersark där vi snabbt kan lägga till och ta bort saker från toppen. Heapen är som en stor lekyta där vi kan placera större saker och ta bort dem när vi vet exakt var de är.

Termer

TermFörklaring
AbstraktEn typ som inte kan instansieras.
DatatypEn klassificering av data som används för att bestämma vilken typ av värde en variabel kan lagra.
EnumEn typ som används för att skapa uppräkningsvärden.
HeapEn del av minnet som används för att lagra referenstyper.
InstansEn specifik förekomst av en klass.
KlassEn mall för att skapa objekt.
MinneEn plats där data lagras.
MinnesadressEn unik identifierare för en plats i minnet.
ObjektEn instans av en klass.
PekareEn variabel som lagrar en minnesadress.
PrimitivEn typ som är inbyggd i språket.
ReferensEn pekare till en plats i minnet där ett objekt finns.
ReferenstypEn typ som lagrar en referens till ett objekt.
StackEn del av minnet som används för att lagra värdestyper.
UppräkningsvärdeEn typ som används för att skapa uppräkningsvärden.
VärdeEn bit av information som lagras i en variabel.
VärdestypEn typ som lagrar ett värde.
VariabelEn behållare som används för att lagra data.

Till toppen

Licens: Apache 2.0 | © 2023 Marcus Medina, Campus Mölndal. Alla rättigheter förbehållna.
Du får använda och modifiera detta verk enligt villkoren i Apache License, Version 2.0. Du får inte använda detta verk för kommersiella ändamål utan tillstånd från upphovsmannen.