Datentyp: Zusammenfassung (Visual Basic)

In der folgenden Tabelle werden die Visual Basic Datentypen, ihre unterstützten allgemeinen Sprachlaufzeittypen, ihre nominale Speicherzuweisung und deren Wertbereiche dargestellt.

Visual Basic Typ Struktur des allgemeinen Sprachlaufzeittyps Nominale Speicherzuweisung Wertebereich
Boolescher Wert Boolean Abhängig von der Implementierungsplattform True oder False
Byte Byte 1 Byte 0 bis 255 (nicht signiert)
Char (einzelnes Zeichen) Char 2 Bytes 0 bis 65535 (nicht signiert)
Datum DateTime 8 Bytes 0:00:00 (Mitternacht) am 1. Januar 0001 bis 11:59:59 Uhr am 31. Dezember 9999
Dezimal Decimal 16 Bytes 0 bis +/-79.228.162.514.264.337.593.543.950.335 (+/-7.9...E+28) ohne Dezimalpunkt; 0 bis +/-7.9228162514264375935439393503350335 mit 28 Stellen rechts neben dem Dezimalzeichen;

kleinste Nichtzeronummer ist +/-0.000000000000000000000000000001 (+/-1E-28)
Double (double-precision floating-point) Double 8 Bytes -1.79769313486231570E+308 bis -4.9406564584124654E-324 für negative Werte;

4.9406564584124654E-324 bis 1.79769313486231570E+308 für positive Werte
Integer Int32 4 Bytes -2.147.483.648 bis 2.147.483.647 (signiert)
Long (long integer) Int64 8 Bytes -9.223.372.036.854.775.808 bis 9.223.372.036.854.775.807 (9.2...E+18 ) (signiert)
Object Object (Klasse) 4 Bytes auf der 32-Bit-Plattform

8 Bytes auf der 64-Bit-Plattform
Jeder Typ kann in einer Variablen des Typs gespeichert werden. Object
SByte SByte 1 Byte -128 bis 127 (signiert)
Kurz (kurze ganze Zahl) Int16 2 Bytes -32.768 bis 32.767 (signiert)
Single (single-precision floating-point) Single 4 Bytes -3.4028235E+38 bis -1.401298E-45 für negative Werte;

1.401298E-45 bis 3.4028235E+38 für positive Werte
Zeichenfolge (variable Länge) String (Klasse) Abhängig von der Implementierungsplattform 0 bis ca. 2 Milliarden Unicode-Zeichen
UInteger UInt32 4 Bytes 0 bis 4.294.967.295 (nicht signiert)
ULong UInt64 8 Bytes 0 bis 18.446.744.073.709.551.615 (1,8...E+19 ) (nicht signiert)
Benutzerdefinierter (Struktur) (erbt von ValueType) Abhängig von der Implementierungsplattform Jedes Element der Struktur verfügt über einen Bereich, der durch den Datentyp und unabhängig von den Bereichen der anderen Member bestimmt wird.
UShort UInt16 2 Bytes 0 bis 65.535 (nicht signiert)

In der wissenschaftlichen Notation bezieht sich "E" auf eine Macht von 10. 3.56E+2 signiert also 3,56 x 102 oder 356, und 3.56E-2 signiert 3.56 / 102 oder 0.0356.

Hinweis

Verwenden Sie für Zeichenfolgen, die Text enthalten, die StrConv Funktion zum Konvertieren von einem Textformat in ein anderes.

Zusätzlich zum Angeben eines Datentyps in einer Deklarationsausweisung können Sie den Datentyp einiger Programmierelemente mithilfe eines Typzeichens erzwingen. Siehe Typzeichen.

Speicherverbrauch

Wenn Sie einen elementaren Datentyp deklarieren, ist es nicht sicher, davon zu ausgehen, dass der Speicherverbrauch identisch ist wie die nominale Speicherzuweisung. Dies liegt an den folgenden Überlegungen:

  • Storage Zuordnung. Die allgemeine Sprachlaufzeit kann auf Grundlage der aktuellen Merkmale der Plattform, auf der Ihre Anwendung ausgeführt wird, Speicher zuweisen. Wenn der Arbeitsspeicher fast vollständig ist, kann es Ihre deklarierten Elemente so eng wie möglich packen. In anderen Fällen kann sie ihre Speicheradressen an natürliche Hardwaregrenzen ausrichten, um die Leistung zu optimieren.

  • Plattformbreite. Storage Zuordnung auf einer 64-Bit-Plattform unterscheidet sich von der Zuordnung auf einer 32-Bit-Plattform.

Zusammengesetzte Datentypen

Die gleichen Überlegungen gelten für jedes Element eines zusammengesetzten Datentyps, z. B. eine Struktur oder ein Array. Sie können sich nicht darauf verlassen, einfach die nominalen Speicherzuweisungen der Mitglieder des Typs hinzuzufügen. Darüber hinaus gibt es weitere Überlegungen, wie z. B. folgendes:

  • Overhead. Einige zusammengesetzte Typen verfügen über zusätzliche Speicheranforderungen. Beispielsweise verwendet ein Array zusätzlichen Arbeitsspeicher für das Array selbst und auch für jede Dimension. Auf einer 32-Bit-Plattform beträgt dieser Aufwand derzeit 12 Bytes plus 8 Bytes für jede Dimension. Auf einer 64-Bit-Plattform wird diese Anforderung verdoppelt.

  • Storage Layout. Sie können nicht sicher davon ausgehen, dass die Reihenfolge des Speichers im Arbeitsspeicher identisch ist wie Ihre Deklarationsreihenfolge. Sie können keine Annahmen über die Byteausrichtung vornehmen, z. B. eine 2-Byte- oder 4-Byte-Grenze. Wenn Sie eine Klasse oder Struktur definieren und das Speicherlayout seiner Mitglieder steuern müssen, können Sie das Attribut auf die StructLayoutAttribute Klasse oder Struktur anwenden.

Objektaufwand

Ein Object Verweis auf einen elementaren oder zusammengesetzten Datentyp verwendet zusätzlich zu den Daten, die im Datentyp enthalten sind, 4 Bytes.

Weitere Informationen