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

โšก Smart oppsummering

Datatyper i C# definerer hva slags verdier en variabel kan holde, alt fra heltall og flyttall til boolske verdier og strengverdier, og de bestemmer hvor mye minne hver variabel reserverer under programkjรธring.

  • ๐Ÿ”ข Heltallstyper: Nรธkkelordet Int32 (int) lagrer hele tall som 10, 20 eller 30 innenfor et fast minneomrรฅde.
  • ๐Ÿ”ฃ Flyttalstyper: double og float holder desimalverdier, mens desimal gir hรธyere presisjon for รธkonomiske beregninger.
  • โ˜‘๏ธ Boolsk type: Det boolske nรธkkelordet lagrer bare sann eller usann og driver betinget logikk.
  • ๐Ÿ”ค Teksttyper: char inneholder et enkelt tegn, og string lagrer en sekvens av tegn som tekst.
  • ๐Ÿงฉ Verdi kontra referanse: Verdityper lagrer data direkte, mens referansetyper som streng lagrer en minneadresse.
  • ๐Ÿค– AI-hjelp: GitHub Copilot og ML.NET bringer kodeforslag og maskinlรฆring til hรฅndtering av C#-typer.

Datatyper i C#

Hva er datatyper i C#?

C#-sprรฅket kommer med et sett med grunnleggende datatyper. Disse datatypene brukes til รฅ bygge verdier som brukes i en applikasjon. La oss utforske de grunnleggende datatypene som er tilgjengelige i C#. For hvert eksempel vil vi bare endre hovedfunksjonen i Program.cs-filen vรฅr.

1) Heltall

Datatyper med heltall brukes til รฅ arbeide med tall. I dette tilfellet er tallene hele tall som 10, 20 eller 30. I C# er datatypen merket med Int32 nรธkkelord. Nedenfor er et eksempel pรฅ hvordan denne datatypen kan brukes. I vรฅrt eksempel vil vi definere en Int32-variabel kalt num. Vi vil da tilordne en heltallsverdi til variabelen og vise den deretter.

Heltallsdatatyper 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. Datatypen Int32 er spesifisert for รฅ deklarere en heltallsvariabel kalt num. Variabelen blir deretter tildelt en verdi pรฅ 30.
  2. Til slutt brukes console.write-funksjonen til รฅ vise nummeret til konsollen.

Hvis koden ovenfor er skrevet inn riktig og programmet kjรธres vellykket, vil fรธlgende utdata vises.

Utgang:

Heltallsdatatyper i C#

Fra utgangen kan du tydelig se at heltallsvariabelen kalt num ble vist i konsollen

2) Double

En dobbel datatype brukes til รฅ arbeide med desimaler. I dette tilfellet er tallene hele tall som 10.11, 20.22 eller 30.33. I C# er datatypen betegnet med nรธkkelordet "Double". Nedenfor er et eksempel pรฅ denne datatypen.

I vรฅrt eksempel vil vi definere en dobbel variabel kalt num. Vi vil da tildele en Double verdi til variabelen og vis den deretter.

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 doble datatypen er spesifisert for รฅ deklarere en dobbel type variabel kalt num. Variabelen blir deretter tildelt en verdi pรฅ 30.33.
  2. Til slutt brukes console.write-funksjonen til รฅ vise nummeret til konsollen.

Hvis koden ovenfor er skrevet inn riktig og programmet kjรธres vellykket, vil fรธlgende utdata vises.

Utgang:

Double Datatyper i C#

Fra utgangen kan du tydelig se at den doble variabelen kalt num ble vist i konsollen

3) Boolsk

En boolsk datatype brukes til รฅ arbeide med boolske verdier av sant og usant. I C# er datatypen betegnet med det boolske nรธkkelordet. Nedenfor er et eksempel pรฅ at denne datatypen kan brukes.

I vรฅrt eksempel vil vi definere en boolsk variabel kalt "status". Vi vil da tilordne en boolsk verdi til variabelen og deretter vise den deretter.

Boolske 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 datatypen er spesifisert for รฅ erklรฆre en boolsk variabel kalt "status". Variabelen tildeles deretter verdien sann/falsk.
  2. Til slutt brukes console.write-funksjonen til รฅ vise den boolske verdien til konsollen.

Hvis koden ovenfor er angitt riktig og programmet kjรธres vellykket, vil utdataene vises.

Utgang:

Boolske datatyper i C#

Fra utdata kan du tydelig se at den boolske variabelen som er lik sann ble vist i konsollen

4) String

En strengdatatype brukes til รฅ arbeide med strengverdier. I C# er datatypen betegnet med nรธkkelordet 'String'. Nedenfor er et eksempel pรฅ denne datatypen.

I vรฅrt eksempel vil vi definere en strengvariabel kalt "melding". Vi tilordner deretter en strengverdi til variabelen og viser den deretter.

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 spesifisert for รฅ deklarere en strengvariabel kalt melding. Variabelen blir deretter tildelt verdien "Hello".
  2. Til slutt brukes console.write-funksjonen til รฅ vise strengverdien til konsollen.

Hvis koden ovenfor er angitt riktig og programmet kjรธres vellykket, vil utdataene vises.

Utgang:

Strengdatatyper i C#

Fra utgangen kan du tydelig se at strengvariabelen kalt melding ble vist i konsollen

Komplett liste over C#-datatyper

De fire eksemplene ovenfor dekker de vanligste typene, men C# tilbyr et komplett sett med innebygde verdidatatyper. Hver type reserverer en fast mengde minne og aksepterer et spesifikt verdiomrรฅde, sรฅ รฅ velge den minste typen som trygt passer til dataene dine holder et program effektivt.

Data-type Stรธrrelse Rekkevidde / Description
byte 1 bytes 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 Svรฆrt store hele tall (ยฑ9.2 kvintillioner)
flyte 4 bytes Desimaltall med omtrent 6โ€“7 sifres presisjon
dobbelt 8 bytes Desimaltall med omtrent 15โ€“16 sifres presisjon
desimal 16 bytes Hรธypresisjonsdesimaler (28โ€“29 sifre) for penger
chariot 2 bytes Et enkelt Unicode-tegn
bool 1 bytes sant eller usant

Ved siden av disse verditypene er strengtypen den mest brukte referansetypen og lagrer en sekvens av tegn av en hvilken som helst lengde. ร… velge en passende type forhindrer overlรธpsfeil og unรธdvendig minnebruk.

Verdityper vs. referansetyper i C#

Alle C#-datatyper faller inn i en av to grupper: verdityper og referansetyper. Dette skillet styrer hvordan C# lagrer dataene og hvordan en variabel oppfรธrer seg nรฅr du kopierer den eller sender den til en metode.

  • Verdityper: Disse lagrer de faktiske dataene direkte, vanligvis pรฅ stakken. int, double, bool, char, enum, og struct er verdityper. ร… tilordne รฉn variabel til en annen kopierer verdien, slik at de to variablene forblir uavhengige.
  • Referansetyper: Disse lagrer en referanse (en minneadresse) som peker til data pรฅ heapen. streng-, objekt-, array- og klasseinstanser er referansetyper. Kopiering av en referansevariabel kopierer bare adressen, slik at begge variablene deler det samme objektet.

En verditypevariabel kan aldri vรฆre null fordi den alltid har en verdi, mens en uinitialisert referansetype har standardverdien null. ร… forstรฅ denne forskjellen hjelper deg med รฅ forutsi hvordan endringer i data flyter gjennom et program.

Typekonvertering i C#

C# trenger ofte รฅ flytte en verdi fra รฉn datatype til en annen, for eksempel รฅ gjรธre brukerinput, som alltid er tekst, om til et tall. Denne prosessen kalles typekonvertering, og det skjer pรฅ tre hovedmรฅter.

  • Implisitt konvertering: Kompilatoren konverterer automatisk nรฅr det ikke er noen risiko for datatap, for eksempel nรฅr man tilordner et heltall til en double. Ingen spesiell syntaks er nรธdvendig.
  • Eksplisitt konvertering (casting): Du plasserer mรฅltypen i parentes, for eksempel (int)myDoubleCasting kan miste data โ€“ รฅ konvertere en dobbel til et heltall mister desimaldelen โ€“ sรฅ du aksepterer risikoen bevisst.
  • Hjelpemetoder: Convert-klassen (Convert.ToInt32) og hver types Parse-metode (int.Parse) gjรธr strenger om til tall, mens ToString gjรธr verdier om til lesbar tekst igjen.

ร… velge riktig konvertering holder dataene nรธyaktige og forhindrer kjรธretidsfeil nรฅr typene pรฅ hver side av en tildeling ikke samsvarer.

Spรธrsmรฅl og svar

Float, double og decimal lagrer alle desimaltall, men de varierer i presisjon og stรธrrelse. Float bruker 4 byte med omtrent 7 sifre, double bruker 8 byte med omtrent 15 sifre, og desimal bruker 16 byte for hรธypresisjons finansielle verdier.

Det er ingen reell forskjell. int er et C#-alias for .NET System.Int32-typen, sรฅ int og Int32 kompilerer til nรธyaktig det samme. De fleste utviklere skriver int for korthets skyld, mens Int32 gjรธr den underliggende rammeverkstypen eksplisitt.

streng er en referansetype fordi den lagrer en referanse til tegndata som ligger pรฅ heapen. Den oppfรธrer seg imidlertid som en verditype pรฅ รฉn mรฅte: strenger er uforanderlige, sรฅ hver endring oppretter et nytt strengobjekt i stedet for รฅ redigere det gamle.

En nullbar type lar en verditype som int eller bool ogsรฅ inneholde null, skrevet med et etterfรธlgende spรธrsmรฅlstegn, for eksempel int?. Det er nyttig for valgfrie data- og databasefelt, der en manglende verdi mรฅ representeres tydelig fra null eller usann.

Et tegn inneholder nรธyaktig ett Unicode-tegn og bruker enkle anfรธrselstegn, for eksempel 'A'. En streng inneholder en sekvens pรฅ null eller flere tegn og bruker doble anfรธrselstegn. Et tegn er en verditype, mens en streng er en referansetype.

`var` utleder en variabels type ved kompileringstid, og den typen blir deretter fikset med full IntelliSense-stรธtte. `dynamic` utsetter typesjekking til kjรธretid, slik at typefeil bare dukker opp under utfรธrelse. Bruk `var` for sikkerhet og `dynamic` for fleksible scenarier med sen binding.

Ja. GitHub Copilot foreslรฅr typedeklarasjoner, konverteringer og standardinnstillinger i Visual Studio og Visual Studio CodeDen kan anbefale en passende numerisk type eller generere parsekode, men du bรธr gjennomgรฅ resultatet, siden forslag kan overse presisjon eller ha problemer med overlรธp.

Ja. ML.NET tilordner C#-datatyper til modellfunksjoner, ved hjelp av numeriske typer som float og double for treningsdata og string for tekst. Sterkt typede dataklasser beskriver hver kolonne, slik at maskinlรฆringsmodeller integreres naturlig i C#-applikasjoner.

Oppsummer dette innlegget med: