Entdecken Sie Werttypen und Verweistypen
- 8 Minuten
Bei vielen Datentypen, die in C# verfügbar sind, bedeutet die Auswahl des richtigen Datentyps, dass Sie verstehen müssen, wann Sie einen Datentyp über einen anderen auswählen können.
Bevor Sie darüber diskutieren, warum Sie einen Datentyp anstatt eines anderen wählen, müssen Sie mehr über Datentypen verstehen. Außerdem müssen Sie wissen, wie Daten und Datentypen in C# und .NET funktionieren.
Was sind Daten?
Die Beantwortung der Frage "Was sind Daten" hängt davon ab, wer Sie fragen, und in welchem Kontext Sie sie stellen.
Bei der Softwareentwicklung sind Daten im Wesentlichen ein Wert, der im Speicher des Computers als Eine Reihe von Bits gespeichert wird. Ein Bit ist ein einfacher binärer Schalter, der als 0 oder 1 dargestellt wird, beziehungsweise 'aus' und 'ein'. Ein einzelnes Bit scheint jedoch nicht nützlich zu sein. Wenn Sie jedoch 8 Bit in einer Sequenz kombinieren, bilden sie ein Byte. Bei Verwendung in einem Byte übernimmt jedes Bit eine Bedeutung in der Sequenz. Tatsächlich können Sie 256 verschiedene Kombinationen mit nur 8 Bit darstellen, wenn Sie ein binäres Numeralsystem (Base-2) verwenden.
In einem binären Zahlensystem können Sie beispielsweise die Zahl 195 als 11000011 darstellen. In der folgenden Tabelle können Sie visualisieren, wie dies funktioniert. Die erste Zeile weist acht Spalten auf, die einer Position in einem Byte entsprechen. Jede Position stellt einen anderen numerischen Wert dar. Die zweite Zeile kann den Wert eines einzelnen Bits speichern, entweder 0 oder 1.
| 128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
|---|---|---|---|---|---|---|---|
| 1 | 1 | 0 | 0 | 0 | 0 | 1 | 1 |
Wenn Sie die Zahl aus jeder Spalte in der ersten Zeile addieren, die einer 1 in der zweiten Zeile entspricht, erhalten Sie die dezimale Entsprechung der binären Numeralsystemdarstellung. In diesem Fall wäre es 128 + 64 + 2 + 1 = 195.
Um mit größeren Werten über 255 zu arbeiten, speichert Ihr Computer mehr Bytes (typischerweise 32-Bit oder 64-Bit). Wenn Sie mit Millionen von großen Mengen an Zahlen in einem wissenschaftlichen Umfeld arbeiten, müssen Sie möglicherweise sorgfältiger überlegen, welche Datentypen Sie verwenden. Ihr Code benötigt möglicherweise mehr Arbeitsspeicher, um ausgeführt zu werden.
Was ist mit Textdaten?
Wenn ein Computer nur 0s und 1s versteht, wie kann er Ihnen dann die Arbeit mit Text ermöglichen? Mit einem System wie ASCII (American Standard Code for Information Interchange) können Sie ein einzelnes Byte verwenden, um Groß- und Kleinbuchstaben, Zahlen, Tabstopps, die Rücktaste, Zeilenvorschubzeichen und viele mathematische Symbole darzustellen.
Wenn Sie beispielsweise einen Kleinbuchstaben a als Wert in meiner Anwendung speichern möchten, würde der Computer nur die binäre Form dieses Werts verstehen. Um besser zu verstehen, wie ein Kleinbuchstaben a vom Computer behandelt wird, muss ich eine ASCII-Tabelle suchen, die ASCII-Werte und ihre Dezimaläquivalente bereitstellt. Sie können nach den Begriffen "ASCII-Nachschlagekomma" suchen, um eine solche Ressource online zu finden.
In diesem Fall entspricht der Kleinbuchstabe a dem Dezimalwert 97. Anschließend würden Sie dasselbe binäre Numeralsystem in umgekehrter Weise verwenden, um zu ermitteln, wie ein ASCII-Buchstabe a vom Computer gespeichert wird.
| 128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
|---|---|---|---|---|---|---|---|
| 0 | 1 | 1 | 0 | 0 | 0 | 0 | 1 |
Seit 64 + 32 + 1 = 97 ist der 8-Bit-Binär-ASCII-Code für a01100001.
Es ist wahrscheinlich, dass Sie diese Arten von Konvertierungen niemals alleine durchführen müssen, aber das Verständnis der Datenperspektive des Computers ist ein grundlegendes Konzept, insbesondere, wenn Sie Datentypen in Betracht ziehen.
Was ist ein Datentyp?
Ein Datentyp ist eine Möglichkeit, wie eine Programmiersprache definiert, wie viel Arbeitsspeicher für einen Wert gespeichert werden soll. Es gibt viele Datentypen in der Sprache C#, die für viele verschiedene Anwendungen und Datengrößen verwendet werden sollen.
Für die meisten Anwendungen, die Sie in Ihrer Karriere erstellen, entscheiden Sie sich für eine kleine Teilmenge aller verfügbaren Datentypen. Es ist jedoch immer noch wichtig zu wissen, dass andere existieren und warum.
Wert- und Verweistypen
Dieses Modul konzentriert sich auf die beiden Typen in C#: Verweistypen und Werttypen.
Variablen von Referenztypen speichern Verweise auf ihre Daten (Objekte), d. h. sie verweisen auf Datenwerte, die an einer anderen Stelle gespeichert sind. Im Vergleich dazu enthalten Variablen von Werttypen direkt ihre Daten. Wenn Sie mehr über C# erfahren, ergeben sich neue Details im Zusammenhang mit dem grundlegenden Unterschied zwischen Wert- und Referenztypen.
Einfache Werttypen
Einfache Werttypen sind eine Reihe vordefinierter Typen, die von C# als Schlüsselwörter bereitgestellt werden. Diese Schlüsselwörter sind Aliase (ein Spitzname) für vordefinierte Typen, die in der .NET-Klassenbibliothek definiert sind. Das C#-Schlüsselwort int ist z. B. ein Alias eines Werttyps, der in der .NET-Klassenbibliothek definiert ist.System.Int32
Einfache Werttypen enthalten viele der Datentypen, die Sie möglicherweise bereits verwendet haben, char und bool. Es gibt auch viele integrale und Gleitkommawerttypen , um eine breite Palette von ganzen und Bruchzahlen darzustellen.
Zusammenfassung
- Werte werden als Bits gespeichert, die einfache Ein-/Aus-Schalter sind. Wenn Sie genügend dieser Schalter kombinieren, können Sie fast jeden möglichen Wert speichern.
- Es gibt zwei grundlegende Kategorien von Datentypen: Wert- und Referenztypen. Der Unterschied besteht darin, wie und wo die Werte beim Ausführen des Programms vom Computer gespeichert werden.
- Einfache Werttypen verwenden einen Schlüsselwortalias, um formale Namen von Typen in der .NET-Bibliothek darzustellen.