Auswählen des richtigen Datentyps

Abgeschlossen

Sie haben den Unterschied zwischen Werttypen und Verweistypen sowie integralen Typen und Gleitkommatypen kennengelernt.

Angenommen, Ihre Aufgabe besteht darin, eine neue Anwendung zu erstellen, die verschiedene Typen von Daten abruft, bearbeitet und speichert. Welche Datentypen nutzen Sie?

In einigen Fällen fällt die Wahl einfach. Wenn Sie beispielsweise mit Text arbeiten müssen, verwenden Sie üblicherweise den string-Datentyp, es sei denn, Sie müssen eine beträchtliche Anzahl von Verkettungsvorgängen ausführen.

Aber wie sieht es beim Arbeiten mit numerischen Daten aus? Es gibt 11 verschiedene Optionen. Wie wählen Sie den richtigen Datentyp aus?

Auswählen des richtigen Datentyps

Welche Kriterien sollten Sie bei so vielen Datentypen verwenden, um den richtigen Datentyp für den jeweiligen Fall auszuwählen?

Wenn Sie Ihre Optionen auswerten, müssen Sie einige wichtige Überlegungen gegeneinander abwägen. Häufig gibt es nicht DIE richtige Antwort, aber einige Antworten sind richtiger als andere.

Auswählen des Datentyps, der die Anforderungen an den Grenzwertbereich Ihrer Anwendung erfüllt

Die Auswahl eines Datentyps kann dabei helfen, die Grenzen für die Größe der Daten festzulegen, die Sie in der jeweiligen Variablen speichern können. Wenn Sie beispielsweise wissen, dass eine bestimmte Variable nur eine Zahl zwischen 1 und 10.000 speichern soll und andernfalls außerhalb der Grenzen der erwarteten Werte liegt, würden Sie wahrscheinlich byte und sbyte vermeiden, da ihre Bereiche zu klein sind.

Außerdem benötigen Sie wahrscheinlich int, long, uint und ulong nicht, da diese Typen wesentlich mehr Daten speichern können als erforderlich. Ebenso würden Sie wahrscheinlich float, double und decimal nicht verwenden, wenn Sie keine Bruchwerte benötigen. Sie können den Typ auf short und ushort eingrenzen, von denen beide in Frage kommen können. Wenn Sie sicher sind, dass ein negativer Wert in Ihrer Anwendung keine Bedeutung hat, können Sie ushort auswählen (positive ganze Zahl ohne Vorzeichen, 0 bis 65.535). Nun würde jeder Wert, der einer Variablen vom Typ ushort außerhalb der Grenze von 0 bis 65.535 zugewiesen wird, eine Ausnahme auslösen und Ihnen so auf subtile Weise helfen, einen gewissen Grad an Integritätsprüfung in Ihrer Anwendung durchzusetzen.

Auswählen des Datentyps in Hinblick auf die Daten (nicht auf die Optimierung der Leistung)

Sie könnten versucht sein, den Datentyp auszuwählen, der die wenigsten Bits verwendet, um Daten zu speichern, da Sie glauben, dass er die Leistung Ihrer Anwendung verbessern wird. Einige der besten Ratschläge in Bezug auf die Anwendungsleistung (d.h. wie schnell Ihre Anwendung ausgeführt wird) besteht jedoch darin, nicht „vorzeitig zu optimieren“. Sie sollten der Versuchung widerstehen, die Teile Ihres Codes zu erraten (einschließlich der Auswahl der Datentypen), die die Leistung Ihrer Anwendung gegebenenfalls beeinträchtigen können.

Viele Entwickler gehen davon aus, dass ein bestimmter Datentyp, der weniger Informationen speichert, weniger Prozessorleistung und Arbeitsspeicher des Computers verwenden muss als ein Datentyp, der mehr Informationen speichert. Stattdessen sollten Sie die richtige Größe für Ihre Daten wählen, um später die Leistung Ihrer Anwendung mithilfe einer speziellen Software empirisch zu messen, die sachliche Erkenntnisse über die Teile Ihrer Anwendung liefert, die sich negativ auf die Leistung auswirken.

Auswählen der Datentypen auf der Grundlage der Eingangs- und Ausgangsdatentypen der verwendeten Bibliotheksfunktionen

Angenommen, Sie möchten mit einem Zeitraum von Jahren zwischen zwei Datumsangaben arbeiten. Da es sich hierbei um eine Geschäftsanwendung handelt, stellen Sie gegebenenfalls fest, dass Sie nur einen Bereich von ungefähr 1960 bis 2200 benötigen. Sie könnten versuchen, mit byte zu arbeiten, da dieser Typ Zahlen zwischen 0 und 255 darstellen kann.

Wenn Sie sich jedoch die integrierten Methoden für die Klassen System.TimeSpan und System.DateTime ansehen, stellen Sie fest, dass sie größtenteils Werte vom Typ double und int akzeptieren. Wenn Sie sbyte auswählen, müssen Sie ständig Typumwandlungen zwischen byte und double oder int ausführen. In diesem Fall könnte es sinnvoller sein, int auszuwählen, wenn Sie keine Subsekundengenauigkeit benötigen, und double, wenn Subsekundengenauigkeit erforderlich ist.

Auswählen von Datentypen basierend auf den Auswirkungen auf andere Systeme

Manchmal müssen Sie berücksichtigen, wie die Informationen von anderen Anwendungen oder anderen Systemen wie einer Datenbank verwendet werden. Beispielsweise unterscheidet sich das Typsystem von SQL Server vom Typsystem von C#. Daher muss eine gewisse Zuordnung zwischen den beiden Typen erfolgen, bevor Sie Daten in dieser Datenbank speichern können.

Wenn der Zweck Ihrer Anwendung darin besteht, eine Schnittstelle zu einer Datenbank zu bilden, müssen Sie wahrscheinlich überlegen, wie die Daten gespeichert werden und wie viele Daten gespeichert werden. Die Wahl eines größeren Datentyps kann sich auf die Menge (und die Kosten) des physischen Speichers auswirken, der zum Speichern aller von Ihrer Anwendung generierten Daten erforderlich ist.

Konzentriere dich auf das Wesentliche

Sie haben zwar schon einige Überlegungen angestellt, aber der Einfachheit halber sollten Sie eine Teilmenge der grundlegenden Datentypen verwenden, darunter:

  • int für die meisten ganzen Zahlen.
  • decimal für Zahlen, die Geldbeträge darstellen.
  • bool für TRUE- oder FALSE-Werte.
  • string für alphanumerische Werte.

Auswählen besonderer komplexer Typen für besondere Situationen

Sie müssen die Datentypen nicht neu erfinden, wenn es bereits einen oder mehrere Datentypen für einen bestimmten Zweck gibt. In den folgenden Beispielen wird ermittelt, wo ein bestimmter .NET-Datentyp nützlich sein kann:

  • byte: Für das Arbeiten mit codierten Daten, die aus anderen Computersystemen stammen oder unterschiedliche Zeichensätze verwenden.
  • double: Für das Arbeiten mit geometrischen Werten oder für wissenschaftliche Zwecke. double wird häufig beim Erstellen von Spielen mit Bewegungsabläufen verwendet.
  • System.DateTime für einen bestimmten Datums- und Uhrzeitwert.
  • System.TimeSpan für eine Zeitspanne von Jahren/Monaten/Tagen/Stunden/Minuten/Sekunden/Millisekunden.

Zusammenfassung

Bei der Auswahl von Datentypen für Ihren Code gibt es einige Überlegungen und oft mehr als eine Option. Denken Sie über Ihre Wahl nach, und wenn kein triftiger Grund dagegen spricht, verwenden Sie die Grundtypen wie int, decimal, string und bool.