Andmetüübid C#-s: Double, täisarv, ujuk, tähemärk

⚡ Nutikas kokkuvõte

C# andmetüübid defineerivad, milliseid väärtusi muutuja saab hoida, alates täisarvudest ja ujukomaarvudest kuni Boole'i ​​ja stringväärtusteni, ning need määravad, kui palju mälu iga muutuja programmi täitmise ajal reserveerib.

  • 🔢 Täisarvude tüübid: Märksõna Int32 (int) salvestab täisarve, näiteks 10, 20 või 30, fikseeritud mäluvahemikus.
  • 🔣 Ujukomaarvude tüübid: Double ja float hoiavad kümnendväärtusi, samas kui decimal pakub finantsarvutuste jaoks suuremat täpsust.
  • ☑️ Boole'i ​​tüüp: Boole'i ​​märksõna salvestab ainult tõese või väära väärtuse ning juhib tingimuslikku loogikat.
  • 🔤 Tekstitüübid: char sisaldab ühte märki ja string salvestab märkide jada tekstina.
  • 🧩 Väärtus vs viide: Väärtuse tüübid salvestavad andmeid otse, samas kui viitetüübid, näiteks string, salvestavad mäluaadressi.
  • 🤖 AI abi: GitHub Copilot ja ML.NET toovad koodisoovitused ja masinõppe C# tüüpide käsitlemisse.

Andmetüübid C#-s

Mis on andmetüübid C#-s?

C# keelega on kaasas põhiandmetüüpide komplekt. Neid andmetüüpe kasutatakse rakenduses kasutatavate väärtuste koostamiseks. Uurime C#-s saadaolevaid põhiandmetüüpe. Iga näite puhul muudame faili Program.cs põhifunktsiooni.

1) Täisarv

Numbritega töötamiseks kasutatakse täisarvulisi andmetüüpe. Sel juhul on arvud täisarvud, näiteks 10, 20 või 30. C#-s tähistatakse andmetüüpi Int32 märksõna. Allpool on näide selle andmetüübi kasutamisest. Meie näites määratleme Int32 muutuja nimega num. Seejärel omistame muutujale täisarvu väärtuse ja kuvame selle vastavalt.

Täisarvude andmetüübid C#-s

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 Selgitus:-

  1. Andmetüüp Int32 on määratud täisarvulise muutuja numbri deklareerimiseks. Seejärel määratakse muutujale väärtus 30.
  2. Lõpuks kasutatakse konsooli numbri kuvamiseks funktsiooni console.write.

Kui ülaltoodud kood on õigesti sisestatud ja programm on edukalt käivitatud, kuvatakse järgmine väljund.

Väljund:

Täisarvude andmetüübid C#-s

Väljundist on selgelt näha, et konsoolis kuvati täisarvuline muutuja num

2) Double

Kümnendkohtadega töötamiseks kasutatakse topeltandmetüüpi. Sel juhul on numbrid täisarvud, näiteks 10.11, 20.22 või 30.33. C#-s tähistatakse andmetüüpi märksõnaga "Double“. Allpool on selle andmetüübi näide.

Meie näites määratleme topeltmuutuja nimega num. Seejärel määrame a Double väärtus muutujale ja seejärel kuvada see vastavalt.

Double Andmetüübid C#-s

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 Selgitus:-

  1. Topeltandmetüüp on määratud topelttüübi deklareerimiseks muutuja kutsus nr. Seejärel omistatakse muutujale väärtus 30.33.
  2. Lõpuks kasutatakse konsooli numbri kuvamiseks funktsiooni console.write.

Kui ülaltoodud kood on õigesti sisestatud ja programm on edukalt käivitatud, kuvatakse järgmine väljund.

Väljund:

Double Andmetüübid C#-s

Väljundist on selgelt näha, et konsoolis kuvati topeltmuutujat num

3) Boolean

Tõeväärtuste väärtustega töötamiseks kasutatakse tõeväärtuse andmetüüpi tõene ja vale. C#-s tähistatakse andmetüüpi Boole'i ​​märksõnaga. Allpool on näide selle andmetüübi kohta, mida saab kasutada.

Meie näites määratleme Boole'i ​​muutuja nimega "status". Seejärel omistame muutujale tõeväärtuse ja kuvame selle vastavalt.

Boole'i ​​andmetüübid C#-s

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 Selgitus:-

  1. Tõeväärtuse andmetüüp on määratud Boole'i ​​muutuja nimega "status" deklareerimiseks. Seejärel omistatakse muutujale väärtus tõene/väär.
  2. Lõpuks kasutatakse konsooli Boole'i ​​väärtuse kuvamiseks funktsiooni console.write.

Kui ülaltoodud kood on õigesti sisestatud ja programm on edukalt käivitatud, kuvatakse väljund.

Väljund:

Boole'i ​​andmetüübid C#-s

Väljundist on selgelt näha, et konsoolis kuvati Boole'i ​​muutuja, mis võrdub tõega

4) String

Stringi väärtustega töötamiseks kasutatakse andmetüüpi String. C#-s tähistatakse andmetüüpi märksõnaga "String". Allpool on selle andmetüübi näide.

Meie näites määratleme String muutuja nimega 'message'. Seejärel omistame muutujale stringi väärtuse ja kuvame selle vastavalt.

Stringi andmetüübid C#-s

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 Selgitus:-

  1. Andmetüüp String on määratud selleks, et deklareerida stringimuutuja nimega sõnum. Seejärel omistatakse muutujale väärtus "Tere".
  2. Lõpuks kasutatakse konsooli stringiväärtuse kuvamiseks funktsiooni console.write.

Kui ülaltoodud kood on õigesti sisestatud ja programm on edukalt käivitatud, kuvatakse väljund.

Väljund:

Stringi andmetüübid C#-s

Väljundist on selgelt näha, et konsoolis kuvati muutuja String nimega teade

C# andmetüüpide täielik loend

Ülaltoodud neli näidet hõlmavad kõige levinumaid tüüpe, kuid C# pakub täielikku komplekti sisseehitatud väärtusandmetüüpe. Iga tüüp reserveerib kindla hulga mälu ja aktsepteerib kindlat väärtuste vahemikku, seega hoiab programmi tõhusana väikseima tüübi valimine, mis teie andmetele ohutult sobib.

Andmetüüp Mõõt Vahemik / Descriptioon
bait 1 bait 0 et 255
lühike 2 baiti -32,768 et 32,767
int (Int32) 4 baiti -2,147,483,648 et 2,147,483,647
pikk 8 baiti Väga suured täisarvud (±9.2 kvintiljonit)
ujuk 4 baiti Kümnendmurrud umbes 6–7-kohalise täpsusega
kahekordistada 8 baiti Kümnendmurrud umbes 15–16-kohalise täpsusega
Kümnendkoht 16 baiti Ülitäpsed kümnendmurrud (28–29 numbrit) raha jaoks
sõjavanker 2 baiti Üks Unicode'i märk
loll 1 bait tõene või vale

Lisaks neile väärtustüüpidele on stringitüüp kõige laialdasemalt kasutatav viitetüüp ja see salvestab mis tahes pikkusega tähemärkide jada. Sobiva tüübi valimine hoiab ära ületäitumise vead ja tarbetu mälukasutuse.

Väärtuse tüübid vs viite tüübid C#-s

Iga C# andmetüüp jaguneb kahte rühma: väärtustüübid ja viitetüübid. See erinevus määrab, kuidas C# andmeid salvestab ja kuidas muutuja käitub, kui seda kopeerite või meetodile edastate.

  • Väärtuse tüübid: Need salvestavad tegelikud andmed otse, tavaliselt pinumällu. int, double, bool, char, loend, ja struct on väärtustüübid. Ühe muutuja määramine teisele kopeerib väärtuse, seega jäävad kaks muutujat sõltumatuks.
  • Viidete tüübid: Need salvestavad viite (mäluaadressi), mis osutab heapil olevatele andmetele. String, objekt, massiivid ja klassi eksemplarid on viitetüübid. Viitemuutuja kopeerimine kopeerib ainult aadressi, seega jagavad mõlemad muutujad sama objekti.

Väärtustüübi muutuja ei saa kunagi olla null, kuna see sisaldab alati väärtust, samas kui initsialiseerimata viitetüübi vaikeväärtus on null. Selle erinevuse mõistmine aitab ennustada, kuidas andmete muutused programmis liiguvad.

Tüübi teisendamine C#-s

C#-s on sageli vaja väärtust ühest andmetüübist teise teisaldada, näiteks kasutaja sisendi, mis on alati tekst, muutmine numbriks. Seda protsessi nimetatakse tüübi teisendamiseks ja see toimub kolmel peamisel viisil.

  • Kaudne konversioon: Kompilaator teisendab automaatselt, kui andmete kadumise ohtu pole, näiteks kui topeltarvule määratakse täisarv (int). Spetsiaalset süntaksit pole vaja.
  • Selgesõnaline konversioon (osatäitmine): Sihttüübi paned sulgudesse, näiteks (int)myDouble. Tüüpmuunduri (casting) kasutamine võib andmeid kaotada – topeltarvu (double) teisendamine täisarvuks (int) kaotab kümnendosa –, seega võtad riski teadlikult enda peale.
  • Abistaja meetodid: Klass Convert (Convert.ToInt32) ja iga tüübi Parse meetod (int.Parse) muudavad stringid numbriteks, samas kui ToString muudab väärtused tagasi loetavaks tekstiks.

Õige teisenduse valimine hoiab andmed täpsed ja hoiab ära käitusaja vead, kui omistamise mõlemal poolel olevad tüübid ei ühti.

KKK

float, double ja decimal salvestavad kõik kümnendarve, kuid erinevad täpsuse ja suuruse poolest. float kasutab 4 baiti umbes 7 numbriga, double kasutab 8 baiti umbes 15 numbriga ja decimal kasutab suure täpsusega finantsväärtuste jaoks 16 baiti.

Tegelikult pole vahet. int on C# alias .NET System.Int32 tüübile, seega kompileeruvad nii int kui ka Int32 täpselt samaks tulemuseks. Enamik arendajaid kirjutab int lühiduse huvides, samas kui Int32 muudab aluseks oleva raamistiku tüübi eksplitsiitseks.

string on viitetüüp, kuna see salvestab viite heapil hoitavatele märgiandmetele. Ühes mõttes käitub see aga väärtustüübina: stringid on muutmatud, seega iga muudatus loob uue stringiobjekti, selle asemel et vana redigeerida.

Nullitav tüüp lubab väärtustüübil (nt int või bool) hoida ka väärtust null, mille lõppu kirjutatakse küsimärgiga, näiteks int?. See on kasulik valikuliste andmete ja andmebaasiväljade puhul, kus puuduv väärtus tuleb esitada nullist või väärast eristatavalt.

Char sisaldab täpselt ühte Unicode'i märki ja kasutab üksikuid jutumärke, näiteks 'A'. String sisaldab nullist või enamast märgist koosnevat jada ja kasutab topeltjutumärke. Char on väärtustüüp, string aga viitetüüp.

„var“ järeldab muutuja tüübi kompileerimise ajal ja see tüüp fikseeritakse seejärel täieliku IntelliSense'i toega. „dynamic“ lükkab tüübikontrolli käitusajale, seega tüübivead ilmnevad ainult täitmise ajal. Kasutage „var“ turvalisuse huvides ja „dynamic“ paindlike, hilise ajaga seotud stsenaariumide korral.

Jah. GitHub Copilot soovitab Visual Studios tüübideklaratsioone, teisendusi ja malli. Visual Studio CodeSee võib soovitada sobivat numbritüüpi või genereerida parsimiskoodi, kuid peaksite selle väljundit üle vaatama, kuna soovitused võivad olla ebatäpsed või sisaldada ületäitumise probleeme.

Jah. ML.NET seob C# andmetüübid mudeli funktsioonidega, kasutades treeningandmete jaoks numbrilisi tüüpe (nt float ja double) ning teksti jaoks string. Tugevalt tüübitud andmeklassid kirjeldavad iga veergu, seega integreeruvad masinõppe mudelid loomulikult C# rakendustesse.

Võta see postitus kokku järgmiselt: