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: