Datatyper i C#: Double, Heltal, Float, Char

โšก Smart opsummering

Datatyper i C# definerer den type vรฆrdier, en variabel kan indeholde, lige fra heltal og flydende tal til booleske vรฆrdier og strengvรฆrdier, og de bestemmer, hvor meget hukommelse hver variabel reserverer under programudfรธrelse.

  • ๐Ÿ”ข Heltalstyper: Nรธgleordet Int32 (int) gemmer hele tal som 10, 20 eller 30 inden for et fast hukommelsesomrรฅde.
  • ๐Ÿ”ฃ Flydende komma-typer: double og float holder decimalvรฆrdier, mens decimal giver hรธjere prรฆcision til finansielle beregninger.
  • โ˜‘๏ธ Boolsk type: Det boolske nรธgleord gemmer kun sandt eller falsk og styrer betinget logik.
  • ๐Ÿ”ค Teksttyper: char indeholder et enkelt tegn, og string gemmer en sekvens af tegn som tekst.
  • ๐Ÿงฉ Vรฆrdi vs. reference: Vรฆrdityper gemmer data direkte, mens referencetyper som strenge gemmer en hukommelsesadresse.
  • ๐Ÿค– AI assistance: GitHub Copilot og ML.NET bringer kodeforslag og maskinlรฆring til hรฅndtering af C#-typer.

Datatyper i C#

Hvad er datatyper i C#?

C#-sproget leveres med et sรฆt grundlรฆggende datatyper. Disse datatyper bruges til at bygge vรฆrdier, som bruges i en applikation. Lad os udforske de grundlรฆggende datatyper, der er tilgรฆngelige i C#. For hvert eksempel vil vi kun รฆndre hovedfunktionen i vores Program.cs-fil.

1) Heltal

Et heltal datatyper bruges til at arbejde med tal. I dette tilfรฆlde er tallene hele tal som 10, 20 eller 30. I C# er datatypen angivet med Int32 nรธgleord. Nedenfor er et eksempel pรฅ, hvordan denne datatype kan bruges. I vores eksempel vil vi definere en Int32-variabel kaldet num. Vi vil derefter tildele en heltalsvรฆrdi til variablen og derefter vise den i overensstemmelse hermed.

Heltalsdatatyper i C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DemoApplication
{
 class Program
 { 
  static void Main(string[] args) 
  {
   Int32 num=30;
   Console.Write(num);  
   
   Console.ReadKey();
  }
 }
}

Code Forklaring:-

  1. Int32-datatypen er specificeret til at erklรฆre en heltalsvariabel kaldet num. Variablen tildeles derefter en vรฆrdi pรฅ 30.
  2. Endelig bruges console.write-funktionen til at vise nummeret til konsollen.

Hvis ovenstรฅende kode er indtastet korrekt, og programmet udfรธres korrekt, vil fรธlgende output blive vist.

Output:

Heltalsdatatyper i C#

Fra outputtet kan du tydeligt se, at Integer-variablen kaldet num blev vist i konsollen

2) Double

En dobbelt datatype bruges til at arbejde med decimaler. I dette tilfรฆlde er tallene hele tal som 10.11, 20.22 eller 30.33. I C# er datatypen angivet med sรธgeordet "Doubleโ€œ. Nedenfor er et eksempel pรฅ denne datatype.

I vores eksempel vil vi definere en dobbelt variabel kaldet num. Vi vil derefter tildele en Double vรฆrdi til variablen og derefter vise den i overensstemmelse hermed.

Double Datatyper i C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DemoApplication
{
 class Program
 { 
  static void Main(string[] args) 
  {
   double num=30.33;
   Console.Write(num); 
   
   Console.ReadKey();
  }
 }
}

Code Forklaring:-

  1. Den dobbelte datatype er specificeret til at erklรฆre en dobbelttype variabel kaldet num. Variablen tildeles derefter en vรฆrdi pรฅ 30.33.
  2. Endelig bruges console.write-funktionen til at vise nummeret til konsollen.

Hvis ovenstรฅende kode er indtastet korrekt, og programmet udfรธres korrekt, vil fรธlgende output blive vist.

Output:

Double Datatyper i C#

Fra outputtet kan du tydeligt se, at den dobbelte variabel kaldet num blev vist i konsollen

3) Boolean

En boolsk datatype bruges til at arbejde med boolske vรฆrdier af sandt og falsk. I C# er datatypen angivet med det boolske nรธgleord. Nedenfor er et eksempel pรฅ, at denne datatype kan bruges.

I vores eksempel vil vi definere en boolsk variabel kaldet 'status'. Vi tildeler derefter en boolesk vรฆrdi til variablen og viser den derefter.

Booleske datatyper i C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DemoApplication
{
 class Program
  { 
   static void Main(string[] args) 
   {
    Boolean status=true;
    Console.Write(status);
    
    Console.ReadKey();
   }
  }
}

Code Forklaring:-

  1. Den boolske datatype er specificeret til at erklรฆre en boolsk variabel kaldet 'status'. Variablen tildeles derefter vรฆrdien sand/falsk.
  2. Endelig bruges console.write-funktionen til at vise den boolske vรฆrdi til konsollen.

Hvis ovenstรฅende kode er indtastet korrekt, og programmet afvikles korrekt, vil outputtet blive vist.

Output:

Booleske datatyper i C#

Fra outputtet kan du tydeligt se, at den boolske variabel, der er lig med sand, blev vist i konsollen

4) Snor

En strengdatatype bruges til at arbejde med strengvรฆrdier. I C# er datatypen angivet med sรธgeordet 'String'. Nedenfor er et eksempel pรฅ denne datatype.

I vores eksempel vil vi definere en strengvariabel kaldet 'besked'. Vi tildeler derefter en strengvรฆrdi til variablen og viser den derefter.

Strengdatatyper i C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DemoApplication
{
 class program
 {
  static void Main(string[] args)
  {
   String message="Hello";
   Console.Write(message);
   
   Console.ReadKey();
  }
 }
}

Code Forklaring:-

  1. Strengdatatypen er specificeret til at erklรฆre en strengvariabel kaldet besked. Variablen tildeles derefter vรฆrdien "Hej".
  2. Endelig bruges console.write-funktionen til at vise strengvรฆrdien til konsollen.

Hvis ovenstรฅende kode er indtastet korrekt, og programmet afvikles korrekt, vil outputtet blive vist.

Output:

Strengdatatyper i C#

Fra outputtet kan du tydeligt se, at String-variablen kaldet besked blev vist i konsollen

Komplet liste over C#-datatyper

De fire eksempler ovenfor dรฆkker de mest almindelige typer, men C# tilbyder et komplet sรฆt af indbyggede vรฆrdidatatyper. Hver type reserverer en fast mรฆngde hukommelse og accepterer et specifikt vรฆrdiinterval, sรฅ valget af den mindste type, der sikkert passer til dine data, holder et program effektivt.

Datatype Stรธrrelse Rรฆkkevidde / Description
byte 1 byte 0 til 255
kort 2 bytes -32,768 til 32,767
int (Int32) 4 bytes -2,147,483,648 til 2,147,483,647
lang 8 bytes Meget store hele tal (ยฑ9.2 quintillioner)
flyde 4 bytes Decimaltal med en prรฆcision pรฅ cirka 6-7 cifre
fordoble 8 bytes Decimaltal med en prรฆcision pรฅ cirka 15-16 cifre
decimal 16 bytes Hรธjprรฆcisionsdecimaler (28-29 cifre) for penge
char 2 bytes Et enkelt Unicode-tegn
bool 1 byte sandt eller falsk

Udover disse vรฆrdityper er strengtypen den mest anvendte referencetype og gemmer en sekvens af tegn af enhver lรฆngde. Valg af en passende type forhindrer overlรธbsfejl og unรธdvendig hukommelsesbrug.

Vรฆrdityper vs. referencetyper i C#

Alle C#-datatyper falder i en af โ€‹โ€‹to grupper: vรฆrdityper og referencetyper. Denne sondring styrer, hvordan C# gemmer dataene, og hvordan en variabel opfรธrer sig, nรฅr du kopierer den eller sender den til en metode.

  • Vรฆrdityper: Disse gemmer de faktiske data direkte, normalt pรฅ stakken. int, double, bool, char, enum, og struct er vรฆrdityper. Nรฅr man tildeler รฉn variabel til en anden, kopieres vรฆrdien, sรฅ de to variabler forbliver uafhรฆngige.
  • Referencetyper: Disse gemmer en reference (en hukommelsesadresse), der peger pรฅ data pรฅ heapen. string-, object-, array- og klasseinstanser er referencetyper. Kopiering af en referencevariabel kopierer kun adressen, sรฅ begge variabler deler det samme objekt.

En variabel af vรฆrditypen kan aldrig vรฆre null, fordi den altid indeholder en vรฆrdi, hvorimod en ikke-initialiseret referencetype som standard har en vรฆrdi pรฅ null. Forstรฅelse af denne forskel hjรฆlper dig med at forudsige, hvordan รฆndringer i data flyder gennem et program.

Typekonvertering i C#

C# har ofte brug for at flytte en vรฆrdi fra รฉn datatype til en anden, f.eks. ved at omdanne brugerinput, som altid er tekst, til et tal. Denne proces kaldes typekonvertering, og det sker pรฅ tre hovedmรฅder.

  • Implicit konvertering: Compileren konverterer automatisk, nรฅr der ikke er risiko for datatab, f.eks. nรฅr der tildeles et heltal til en double. Der krรฆves ingen sรฆrlig syntaks.
  • Eksplicit konvertering (casting): Du placerer mรฅltypen i parenteser, for eksempel (int)myDoubleCasting kan miste data โ€” konvertering af en double til et intall mister decimaldelen โ€” sรฅ du accepterer risikoen bevidst.
  • Hjรฆlpemetoder: Convert-klassen (Convert.ToInt32) og hver types Parse-metode (int.Parse) omdanner strenge til tal, mens ToString omdanner vรฆrdier tilbage til lรฆsbar tekst.

Valg af den korrekte konvertering holder dataene nรธjagtige og forhindrer kรธrselsfejl, nรฅr typerne pรฅ hver side af en tildeling ikke stemmer overens.

Ofte Stillede Spรธrgsmรฅl

Float, double og decimal gemmer alle decimaltal, men adskiller sig i prรฆcision og stรธrrelse. Float bruger 4 bytes med omkring 7 cifre, double bruger 8 bytes med omkring 15 cifre, og decimal bruger 16 bytes til finansielle vรฆrdier med hรธj prรฆcision.

Der er ingen reel forskel. int er et C#-alias for .NET System.Int32-typen, sรฅ int og Int32 kompilerer til prรฆcis det samme. De fleste udviklere skriver int for kortheds skyld, mens Int32 gรธr den underliggende framework-type eksplicit.

`string` er en referencetype, fordi den gemmer en reference til tegndata, der findes pรฅ heapen. Den opfรธrer sig dog som en vรฆrditype pรฅ รฉn mรฅde: strenge er uforanderlige, sรฅ hver รฆndring opretter et nyt strengobjekt i stedet for at redigere det gamle.

En null-bar type tillader en vรฆrditype som int eller bool ogsรฅ at indeholde null, skrevet med et efterfรธlgende spรธrgsmรฅlstegn, for eksempel int?. Det er nyttigt til valgfrie data- og databasefelter, hvor en manglende vรฆrdi skal reprรฆsenteres forskelligt fra nul eller falsk.

Et tegn indeholder prรฆcis รฉt Unicode-tegn og bruger enkelte anfรธrselstegn, f.eks. 'A'. En streng indeholder en sekvens af nul eller flere tegn og bruger dobbelte anfรธrselstegn. Et tegn er en vรฆrditype, mens en streng er en referencetype.

`var` udleder en variabels type ved kompilering, og denne type rettes derefter med fuld IntelliSense-understรธttelse. `dynamic` udskyder typekontrol til runtime, sรฅ typefejl kun opstรฅr under udfรธrelse. `var` bruges af sikkerhedsmรฆssige รฅrsager og `dynamic` til fleksible scenarier med sen binding.

Ja. GitHub Copilot foreslรฅr typedeklarationer, konverteringer og standardtekster i Visual Studio og Visual Studio CodeDen kan anbefale en passende numerisk type eller generere parsingkode, men du bรธr gennemgรฅ dens output, da forslag kan overse prรฆcision eller have problemer med overlรธb.

Ja. ML.NET knytter C#-datatyper til modelfunktioner ved hjรฆlp af numeriske typer som float og double til trรฆningsdata og string til tekst. Stรฆrkt typede dataklasser beskriver hver kolonne, sรฅ maskinlรฆringsmodeller integreres naturligt i C#-applikationer.

Opsummer dette indlรฆg med: