Datatyper er et vigtigt aspekt af ethvert programmeringssprog, og C# tilbyder flere datatyper, der bruges til at deklarere variabler, definere metoder og skabe objekter. I denne artikel vil vi diskutere de forskellige datatyper i C# og deres underkategorier, herunder værdi-, reference- og pointerdatatyper.
Hvilke datatyper findes i C#?
C# er en stærkt indtastet programmeringssprog , hvilket betyder, at alle variabler skal deklareres med en bestemt datatype og har tre hovedkategorier af datatyper:
1: Værdidatatyper
Værdidatatyper er dem, der gemmer deres værdier direkte i hukommelsen. De er allokeret på stakken og bruges ofte til lagring af mindre datasæt. Følgende er underkategorierne af værdidatatyper:
Numerisk datatype
Disse datatyper bruges til lagring af numeriske værdier. Numeriske datatyper er opdelt i flere underkategorier, såsom decimaler, heltal og flydende kommatal:
- Heltal: Disse datatyper bruges til lagring af hele tal, og underkategorierne af heltal inkluderer sbyte, byte, short, ushort, int, uint, long og ulong. Det interval af værdier, som hvert heltalsdataformat kan indeholde, varierer.
- Floating-point-tal: Disse datatyper bruges til at gemme decimaltal, og underkategorierne af flydende tal omfatter flydende og dobbelte. Float kan gemme op til 7 decimalcifre, mens double kan gemme op til 15 decimalcifre.
- Decimaler: Disse datatyper bruges til at gemme meget præcise decimaltal. Decimal kan gemme op til 28 decimaler.
Boolesk datatype
Booleske værdier, som kun kan være sande eller falske, gemmes i denne form for data.
Karakterdatatype
Enkelte tegn gemmes ved hjælp af denne datatype.
Eksempel
Følgende eksempelkode illustrerer, hvordan man bruger værdidatatypen i C#:
bruger System;navneområde ValueDataTypesExample
{
klasse program
{
statisk tomrum Main ( snor [ ] args )
{
int myInt = 5 ;
float myFloat = 3.14f;
dobbelt myDouble = 3.14159265359 ;
bool myBool = rigtigt ;
char myChar = 'en' ;
Console.WriteLine ( 'Min heltalsværdi er:' + myInt ) ;
Console.WriteLine ( 'Min flydende værdi er:' + myFloat ) ;
Console.WriteLine ( 'Min dobbelte værdi er:' + min Dobbelt ) ;
Console.WriteLine ( 'Min booleske værdi er:' + myBool ) ;
Console.WriteLine ( 'Min karakterværdi er:' + myChar ) ;
}
}
}
I dette eksempel har vi erklæret og initialiseret variabler af forskellige værdidatatyper såsom int, float, double, bool og char. Vi udskrev derefter værdierne af disse variable ved hjælp af Console.WriteLine metoden, outputtet af dette program vil være:
2: Referencedatatyper
Referencedatatyper er dem, der gemmer en reference til den hukommelsesplacering, hvor værdien er gemt. De er allokeret på heapen og bruges typisk til lagring af større mængder data. Følgende er underkategorierne af referencedatatyper:
klasse
I C# er en klasse en referencetype, der definerer en plan for at skabe objekter.
Snor
Denne referencedatatype bruges til lagring af tekstdata, strengen er en referencetype, men den opfører sig som en værditype på mange måder.
Array
En samling af værdier af samme type kan gemmes ved hjælp af denne datatype. Arrays er referencetyper, men de kan også opføre sig som værdityper i visse tilfælde.
Interface
En grænseflade definerer et sæt metoder, egenskaber, hændelser og indeksere uden at give nogen implementeringsdetaljer.
Delegeret
En delegeret giver dig mulighed for at videregive en metode som et argument til en anden metode og derefter påberåbe denne metode senere gennem delegaten.
Eksempel
Her er nogle eksempler på C#-kode, der viser, hvordan man bruger reference datatyper :
bruger System;klasse Person
{
offentlig streng Navn;
offentlige in Alder;
}
klasses program
{
statisk tomrum Main ( snor [ ] args )
{
Person person1 = ny Person ( ) ;
person1.Navn = 'HAM SELV' ;
person1.Alder = tyve ;
Person person2 = person1;
person2.Alder = 30 ;
Console.WriteLine ( person1.Navn + 'er' + person1.Alder + ' år gammel.' ) ;
Console.WriteLine ( person2.Navn + 'er' + person2.Alder + ' år gammel.' ) ;
}
}
Klassen Person i dette eksempel har to offentlige felter: Navn, som er af typen streng, og Alder, som er af typen int. Derefter laver vi en ny forekomst af Person-klassen og tildeler den til person1 i Main-metoden. Vi ændrer person1s navn og aldersattributter.
Dernæst opretter vi en anden referencevariabel person2 og tildeler den værdien af person1. Vi ændrer derefter aldersegenskaben for person2 til 30.
Til sidst udskriver vi navn og alder på både person1 og person2. Bemærk, at ændre værdien af person2.Alder ændrer også værdien af person1.Alder , da begge variabler refererer til det samme objekt i hukommelsen.
3: Pointer Datatyper
Pointerdatatyper bruges til at gemme hukommelsesadressen for en anden variabel. De bruges i programmering på lavt niveau, såsom programmering på systemniveau eller udvikling af enhedsdrivere . I C# bruges pointerdatatyper ikke direkte , men de kan bruges i usikre kodeblokke. Følgende er underkategorien af pointerdatatyper:
Pointer Data Type
Denne datatype bruges til at gemme hukommelsesadressen for en anden variabel.
Her er et eksempel, der demonstrerer brugen af pointerdatatyper i C# selvom det kræver meget omhu:
bruger System;klasses program {
statisk usikker tomrum Main ( ) {
int nummer = 10 ;
int * p = & på en;
Console.WriteLine ( $ 'Værdi af num: {num}' ) ;
Console.WriteLine ( $ 'Adresse på nummer: {(lang)p:X}' ) ;
Console.WriteLine ( $ 'Værdi af num ved hjælp af markør: {*p}' ) ;
Console.ReadLine ( ) ;
}
}
I dette eksempel bruger vi det usikre nøgleord til at tillade brugen af pointere. Vi erklærer en int-type variabel og giver den værdien 10. Vi opretter derefter en pointer variabel pointer af typen int* og tildeler den værdiens hukommelsesadresse ved hjælp af & operatoren.
Ydermere får vi så adgang til værdien gemt i værdi ved at dereferere markøren ved hjælp af *-operatoren, og vi kan også ændre værdien ved at bruge den samme operator:
Bemærk: Brug af pointere i C# kræver lidt ekstra omhu og opmærksomhed for at undgå problemer med hukommelseshåndtering, så de bør kun bruges, når det er nødvendigt og med forsigtighed.
Konklusion
Der er mange forskellige datatyper tilgængelige i C#, som kan bruges til forskellige opgaver. Mindre mængder data gemmes ved hjælp af værdidatatyper, og større mængder gemmes ved hjælp af referencedatatyper. Pointerdatatyper bruges i lav-niveau programmering og er ikke almindeligt brugt i C#.