Umfassender Leitfaden zu C# Datentypen: Wert-, Referenz- und Zeigertypen
Variablen in C# werden in die folgenden Typen kategorisiert:
- Werttypen
- Referenztypen
- Zeigertypen
Werttyp
Werttypvariablen können direkt einen Wert zugewiesen bekommen. Sie leiten sich von der Klasse System.ValueType ab.
Werttypen enthalten die Daten direkt. Beispiele sind int, char, float, die Zahlen, alphanumerische Zeichen und Gleitkommazahlen speichern. Wenn Sie einen int-Typ deklarieren, weist das System Speicher zur Speicherung des Werts zu.
Die folgende Tabelle listet die verfügbaren Werttypen in C# 2010 auf:
| Typ | Repräsentiert | Bereich | Standardwert |
|---|---|---|---|
| bool | Boolescher Wert | True oder False | False |
| byte | 8-Bit-Ganzzahl ohne Vorzeichen | 0 bis 255 | 0 |
| char | 16-Bit-Unicode-Zeichen | U+0000 bis U+FFFF | '\0' |
| decimal | 128-Bit präzise Dezimalwerte mit 28-29 signifikanten Stellen | (-7,9 x 1028 bis 7,9 x 1028) / 100 bis 28 | 0,0M |
| double | 64-Bit-Gleitkommazahl doppelter Genauigkeit | (+/-)5,0 x 10-324 bis (+/-)1,7 x 10308 | 0,0D |
| float | 32-Bit-Gleitkommazahl einfacher Genauigkeit | -3,4 x 1038 bis +3,4 x 1038 | 0,0F |
| int | 32-Bit-Ganzzahl mit Vorzeichen | -2.147.483.648 bis 2.147.483.647 | 0 |
| long | 64-Bit-Ganzzahl mit Vorzeichen | -9.223.372.036.854.775.808 bis 9.223.372.036.854.775.807 | 0L |
| sbyte | 8-Bit-Ganzzahl mit Vorzeichen | -128 bis 127 | 0 |
| short | 16-Bit-Ganzzahl mit Vorzeichen | -32.768 bis 32.767 | 0 |
| uint | 32-Bit-Ganzzahl ohne Vorzeichen | 0 bis 4.294.967.295 | 0 |
| ulong | 64-Bit-Ganzzahl ohne Vorzeichen | 0 bis 18.446.744.073.709.551.615 | 0 |
| ushort | 16-Bit-Ganzzahl ohne Vorzeichen | 0 bis 65.535 | 0 |
Um die genaue Größe eines Typs oder einer Variablen auf einer bestimmten Plattform zu erhalten, können Sie die Methode sizeof verwenden. Der Ausdruck sizeof(type) ergibt die Speichergröße des Objekts oder Typs in Bytes. Nachfolgend ein Beispiel, um die Größe des int-Typs auf jedem Rechner zu ermitteln:
Live Demo using System; namespace DataTypeApplication { class Program { static void Main(string[] args) { Console.WriteLine("Size of int: {0}", sizeof(int)); Console.ReadLine(); } } }
Wenn der obige Code kompiliert und ausgeführt wird, erzeugt er das folgende Ergebnis:
Size of int: 4
Referenztyp
Referenztypen enthalten nicht die tatsächlichen Daten, die in einer Variablen gespeichert sind, sondern sie enthalten einen Verweis auf die Variablen.
Mit anderen Worten: Sie verweisen auf eine Speicheradresse. Durch die Verwendung mehrerer Variablen können Referenztypen auf dieselbe Speicheradresse verweisen. Wenn die Daten an der Speicheradresse von einer der Variablen geändert werden, spiegelt die andere Variable diese Wertänderung automatisch wider. Beispiele für eingebaute Referenztypen sind: object, dynamic und string.
Objekttyp
Der Objekttyp ist die ultimative Basisklasse für alle Datentypen im C# Common Type System (CTS). Object ist ein Alias für die Klasse System.Object. Objekttypen können Werte aller anderen Typen zugewiesen bekommen: Werttypen, Referenztypen, vordefinierte oder benutzerdefinierte Typen. Vor der Zuweisung ist jedoch eine Typkonvertierung erforderlich.
Wenn ein Werttyp in einen Objekttyp konvertiert wird, spricht man von Boxing; umgekehrt, wenn ein Objekttyp in einen Werttyp konvertiert wird, spricht man von Unboxing.
object obj; obj = 100; // dies ist Boxing
Dynamischer Typ
Sie können jeden Werttyp in einer dynamischen Datentypvariablen speichern. Die Typprüfung für diese Variablentypen erfolgt zur Laufzeit.
Syntax für die Deklaration eines dynamischen Typs:
dynamic <variable_name> = value;
Beispielsweise:
dynamic d = 20;
Dynamische Typen ähneln Objekttypen, außer dass die Typprüfung für Objekttypvariablen zur Kompilierzeit erfolgt, während sie für dynamische Typvariablen zur Laufzeit stattfindet.
Stringtyp
Der Stringtyp ermöglicht die Zuweisung beliebiger Zeichenkettenwerte an eine Variable. Der Stringtyp ist ein Alias für die Klasse System.String. Er leitet sich vom Objekttyp ab. Der Wert für einen Stringtyp kann in zwei Formen mit Zeichenkettenliteralen zugewiesen werden: in Anführungszeichen und als @-quoted.
Beispielsweise:
String str = "Tutorials Point";
Ein @-quoted Zeichenkettenliteral sieht wie folgt aus:
@"Tutorials Point";
Benutzerdefinierte Referenztypen sind: class, interface oder delegate. Wir werden diese Typen in einem späteren Kapitel besprechen.
Zeigertyp
Zeigertypvariablen speichern die Speicheradresse eines anderen Typs. Zeiger in C# haben dieselben Fähigkeiten wie Zeiger in C oder C++.
Syntax für die Deklaration eines Zeigertyps:
type* identifier;
Beispielsweise:
char* cptr; int* iptr;
Wir werden Zeigertypen im Kapitel 'Unsafe Codes' besprechen.
C Sprache
- 4 Schlüsseltypen von Schlitzantrieben (Slotted Drives) für Befestiger erklärt
- Thermoelemente erklärt: Typen, Bereiche und Leistungsvergleich
- C# Variablen & Primitive Datentypen meistern: Der komplette Guide
- C#-Typkonvertierung meistern: Implizit, Explizit, Parse und Convert-Methoden
- C++-Datentypen verstehen: Grundlagen, Modifizierer und Best Practices
- C Datentypen erklärt: int, float, char und mehr – Ein vollständiger Leitfaden
- Python-Datentypen meistern: Praxisleitfaden
- Python-Typkonvertierung & Casting meistern: Umfassender Leitfaden
- Java Primitive Datentypen: Vollständiger Leitfaden mit Beispielen
- Java Type Casting meistern: Von Widening zu Narrowing und darüber hinaus