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

โšก Smart sammanfattning

Datatyper i C# definierar vilken typ av vรคrden en variabel kan hรฅlla, allt frรฅn heltal och flyttal till booleska vรคrden och strรคngvรคrden, och de avgรถr hur mycket minne varje variabel reserverar under programkรถrning.

  • ๐Ÿ”ข Heltalstyper: Nyckelordet Int32 (int) lagrar heltal som 10, 20 eller 30 inom ett fast minnesomrรฅde.
  • ๐Ÿ”ฃ Flyttalstyper: double och float hรฅller decimalvรคrden, medan decimal erbjuder hรถgre precision fรถr finansiella berรคkningar.
  • โ˜‘๏ธ Boolesk typ: Det booleska nyckelordet lagrar endast sant eller falskt och driver villkorlig logik.
  • ๐Ÿ”ค Texttyper: char innehรฅller ett enda tecken, och strรคng lagrar en sekvens av tecken som text.
  • ๐Ÿงฉ Vรคrde kontra referens: Vรคrdetyper lagrar data direkt, medan referenstyper som strรคng lagrar en minnesadress.
  • ๐Ÿค– AI-hjรคlp: GitHub Copilot och ML.NET ger kodfรถrslag och maskininlรคrning till hantering av C#-typer.

Datatyper i C#

Vad รคr datatyper i C#?

C#-sprรฅket kommer med en uppsรคttning grundlรคggande datatyper. Dessa datatyper anvรคnds fรถr att bygga vรคrden som anvรคnds inom en applikation. Lรฅt oss utforska de grundlรคggande datatyperna som finns tillgรคngliga i C#. Fรถr varje exempel kommer vi att modifiera bara huvudfunktionen i vรฅr Program.cs-fil.

1) Heltal

En heltalsdatatyper anvรคnds fรถr att arbeta med siffror. I det hรคr fallet รคr talen heltal som 10, 20 eller 30. I C# betecknas datatypen med Int32 nyckelord. Nedan รคr ett exempel pรฅ hur denna datatyp kan anvรคndas. I vรฅrt exempel kommer vi att definiera en Int32-variabel som heter num. Vi kommer sedan att tilldela variabeln ett heltalsvรคrde och sedan visa det dรคrefter.

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 Fรถrklaring:-

  1. Datatypen Int32 รคr specificerad fรถr att deklarera en heltalsvariabel som kallas num. Variabeln tilldelas sedan vรคrdet 30.
  2. Slutligen anvรคnds console.write-funktionen fรถr att visa numret till konsolen.

Om ovanstรฅende kod matas in korrekt och programmet kรถrs framgรฅngsrikt, kommer fรถljande utdata att visas.

Produktion:

Heltalsdatatyper i C#

Frรฅn utgรฅngen kan du tydligt se att heltalsvariabeln som heter num visades i konsolen

2) Double

En dubbel datatyp anvรคnds fรถr att arbeta med decimaler. I det hรคr fallet รคr talen heltal som 10.11, 20.22 eller 30.33. I C# betecknas datatypen med nyckelordet "Double". Nedan รคr ett exempel pรฅ denna datatyp.

I vรฅrt exempel kommer vi att definiera en dubbelvariabel som kallas num. Vi kommer sedan att tilldela en Double vรคrde till variabeln och sedan visa den dรคrefter.

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 Fรถrklaring:-

  1. Dubbeldatatypen รคr specificerad fรถr att deklarera en dubbeltyp variabel kallas num. Variabeln tilldelas sedan vรคrdet 30.33.
  2. Slutligen anvรคnds console.write-funktionen fรถr att visa numret till konsolen.

Om ovanstรฅende kod matas in korrekt och programmet kรถrs framgรฅngsrikt, kommer fรถljande utdata att visas.

Produktion:

Double Datatyper i C#

Frรฅn utgรฅngen kan du tydligt se att den dubbla variabeln som heter num visades i konsolen

3) Boolean

En boolesk datatyp anvรคnds fรถr att arbeta med booleska vรคrden pรฅ sant och falskt. I C# betecknas datatypen med det booleska nyckelordet. Nedan รคr ett exempel pรฅ att denna datatyp kan anvรคndas.

I vรฅrt exempel kommer vi att definiera en boolesk variabel som heter 'status'. Vi kommer sedan att tilldela variabeln ett booleskt vรคrde och sedan visa det dรคrefter.

Booleska 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 Fรถrklaring:-

  1. Den booleska datatypen รคr specificerad fรถr att deklarera en boolesk variabel som kallas "status". Variabeln tilldelas sedan vรคrdet sant/falskt.
  2. Slutligen anvรคnds funktionen console.write fรถr att visa det booleska vรคrdet fรถr konsolen.

Om ovanstรฅende kod matas in korrekt och programmet kรถrs framgรฅngsrikt, kommer utdata att visas.

Produktion:

Booleska datatyper i C#

Frรฅn utgรฅngen kan du tydligt se att den booleska variabeln som รคr lika med true visades i konsolen

4) Strรคng

En strรคngdatatyp anvรคnds fรถr att arbeta med strรคngvรคrden. I C# betecknas datatypen med nyckelordet 'String'. Nedan รคr ett exempel pรฅ denna datatyp.

I vรฅrt exempel kommer vi att definiera en strรคngvariabel som kallas 'meddelande'. Vi kommer sedan att tilldela variabeln ett strรคngvรคrde och sedan visa det dรคrefter.

Strรคngdatatyper 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 Fรถrklaring:-

  1. Strรคngdatatypen รคr specificerad fรถr att deklarera en strรคngvariabel som kallas meddelande. Variabeln tilldelas sedan vรคrdet "Hello".
  2. Slutligen anvรคnds console.write-funktionen fรถr att visa strรคngvรคrdet fรถr konsolen.

Om ovanstรฅende kod matas in korrekt och programmet kรถrs framgรฅngsrikt, kommer utdata att visas.

Produktion:

Strรคngdatatyper i C#

Frรฅn utgรฅngen kan du tydligt se att String-variabeln som heter meddelande visades i konsolen

Komplett lista รถver C#-datatyper

De fyra exemplen ovan tรคcker de vanligaste typerna, men C# tillhandahรฅller en komplett uppsรคttning inbyggda vรคrdedatatyper. Varje typ reserverar en fast mรคngd minne och accepterar ett specifikt vรคrdeintervall, sรฅ att vรคlja den minsta typen som sรคkert passar dina data hรฅller ett program effektivt.

Data typ Storlek Rรคckvidd / Description
bitgrupp 1 byte 0 till 255
kort 2 bitgrupper -32,768 till 32,767
int (Int32) 4 bitgrupper -2,147,483,648 till 2,147,483,647
lรฅng 8 bitgrupper Mycket stora heltal (ยฑ9.2 kvintiljoner)
flyta 4 bitgrupper Decimaltal med ungefรคr 6โ€“7 siffrors precision
dubbla 8 bitgrupper Decimaltal med ungefรคr 15โ€“16 siffrors precision
decimal- 16 bitgrupper Hรถgprecisionsdecimaler (28โ€“29 siffror) fรถr pengar
rรถding 2 bitgrupper Ett enda Unicode-tecken
bool 1 byte sant eller falskt

Vid sidan av dessa vรคrdetyper รคr strรคngtypen den mest anvรคnda referenstypen och lagrar en sekvens av tecken av valfri lรคngd. Att vรคlja en lรคmplig typ fรถrhindrar รถverfyllnadsfel och onรถdig minnesanvรคndning.

Vรคrdetyper kontra referenstyper i C#

Varje C#-datatyp faller inom en av tvรฅ grupper: vรคrdetyper och referenstyper. Denna distinktion styr hur C# lagrar data och hur en variabel beter sig nรคr du kopierar den eller skickar den till en metod.

  • Vรคrdetyper: Dessa lagrar sjรคlva datan direkt, vanligtvis pรฅ stacken. int, double, bool, char, upprรคkning, och struct รคr vรคrdetyper. Att tilldela en variabel till en annan kopierar vรคrdet, sรฅ de tvรฅ variablerna fรถrblir oberoende.
  • Referenstyper: Dessa lagrar en referens (en minnesadress) som pekar pรฅ data pรฅ heapen. string, object, arrays och class instances รคr referenstyper. Att kopiera en referensvariabel kopierar bara adressen, sรฅ bรฅda variablerna delar samma objekt.

En variabel av vรคrdetyp kan aldrig vara null eftersom den alltid innehรฅller ett vรคrde, medan en oinitialiserad referenstyp har standardvรคrdet null. Att fรถrstรฅ denna skillnad hjรคlper dig att fรถrutsรคga hur dataรคndringar flรถdar genom ett program.

Typkonvertering i C#

C# behรถver ofta flytta ett vรคrde frรฅn en datatyp till en annan, till exempel genom att omvandla anvรคndarinmatning, som alltid รคr text, till ett tal. Denna process kallas typkonvertering och sker pรฅ tre huvudsakliga sรคtt.

  • Implicit omvandling: Kompilatorn konverterar automatiskt nรคr det inte finns nรฅgon risk fรถr datafรถrlust, till exempel nรคr ett heltal tilldelas en double. Ingen speciell syntax krรคvs.
  • Explicit konvertering (casting): Du placerar mรฅltypen inom parentes, till exempel (int)myDoubleCasting kan fรถrlora data โ€” att konvertera en dubbel till ett heltal tar bort decimaldelen โ€” sรฅ du accepterar risken medvetet.
  • Hjรคlpmetoder: Klassen Convert (Convert.ToInt32) och varje typs Parse-metod (int.Parse) omvandlar strรคngar till tal, medan ToString omvandlar vรคrden tillbaka till lรคsbar text.

Att vรคlja rรคtt konvertering hรฅller data korrekta och fรถrhindrar kรถrtidsfel nรคr typerna pรฅ varje sida av en tilldelning inte matchar.

Vanliga frรฅgor

Float, double och decimal lagrar alla decimaltal men skiljer sig รฅt i precision och storlek. Float anvรคnder 4 byte med cirka 7 siffror, double anvรคnder 8 byte med cirka 15 siffror och decimal anvรคnder 16 byte fรถr hรถgprecision i finansiella vรคrden.

Det finns ingen egentlig skillnad. int รคr ett C#-alias fรถr .NET System.Int32-typen, sรฅ int och Int32 kompilerar till exakt samma sak. De flesta utvecklare skriver int fรถr korthetens skull, medan Int32 gรถr den underliggande ramverkstypen explicit.

string รคr en referenstyp eftersom den lagrar en referens till teckendata som finns pรฅ heapen. Den beter sig dock som en vรคrdetyp pรฅ ett sรคtt: strรคngar รคr ofรถrรคnderliga, sรฅ varje รคndring skapar ett nytt strรคngobjekt istรคllet fรถr att redigera det gamla.

En nullbar typ lรฅter en vรคrdetyp som int eller bool ocksรฅ innehรฅlla null, skrivet med ett avslutande frรฅgetecken, till exempel int?. Det รคr anvรคndbart fรถr valfria data- och databasfรคlt, dรคr ett saknat vรคrde mรฅste representeras tydligt frรฅn noll eller falskt.

Ett tecken innehรฅller exakt ett Unicode-tecken och anvรคnder enkla citattecken, till exempel 'A'. En strรคng innehรฅller en sekvens av noll eller fler tecken och anvรคnder dubbla citattecken. Ett tecken รคr en vรคrdetyp, medan en strรคng รคr en referenstyp.

var hรคrleder en variabels typ vid kompileringstid, och den typen fixeras sedan med fullt IntelliSense-stรถd. dynamic skjuter upp typkontrollen till kรถrning, sรฅ typfel uppstรฅr endast under kรถrning. Anvรคnd var fรถr sรคkerhet och dynamic fรถr flexibla scenarier med sen grรคns.

Ja. GitHub Copilot fรถreslรฅr typdeklarationer, konverteringar och standardinstรคllningar i Visual Studio och Visual Studio CodeDen kan rekommendera en lรคmplig numerisk typ eller generera parsningskod, men du bรถr granska dess utdata, eftersom fรถrslag kan missa precision eller fรฅ problem med รถverflรถde.

Ja. ML.NET mappar C#-datatyper till modellfunktioner med hjรคlp av numeriska typer som float och double fรถr trรคningsdata och strรคngar fรถr text. Starkt typade dataklasser beskriver varje kolumn, sรฅ maskininlรคrningsmodeller integreras naturligt i C#-applikationer.

Sammanfatta detta inlรคgg med: