Freigeben über


Zusammenfassung des Datentyps (Visual Basic)

In der folgenden Tabelle sind die Visual Basic-Datentypen, die unterstützenden Common Language Runtime-Typen, die nominale Speicherzuweisung und die Wertebereiche aufgeführt.

Visual Basic-Typ Struktur des Typs "Common Language Runtime" Nominale Speicherzuweisung Wertebereich
Boolean Boolean Hängt von der Implementierungsplattform ab True oder False
Byte Byte 1 Byte 0 bis 255 (nicht signiert)
Zeichen (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 Dezimalkomma; 0 bis +/-7,9228162514264337593543950335 mit 28 Stellen rechts vom Dezimaltrennzeichen;

Kleinste Nichtzeronummer ist +/-0.0000000000000000000000000001 (+/-1E-28)
Double (Gleitkomma mit doppelter Genauigkeit) Double 8 Bytes -1,79769313486231570E+308 bis -4,94065645841246544E-324 für negative Werte;

4.94065645841246544E-324 bis 1,79769313486231570E+308 für positive Werte
Integer Int32 4 Byte -2.147.483.648 bis 2.147.483.647 (signiert)
Long (lange ganze Zahl) Int64 8 Bytes -9.223.372.036.854.775.808 bis 9.223.372.036.854.775.807 (9.2...E+18 ) (signiert)
Objekt Object (Klasse) 4 Bytes auf der 32-Bit-Plattform

8 Bytes auf 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 (Gleitkomma mit einfacher Genauigkeit) Single 4 Byte -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) Hängt von der Implementierungsplattform ab 0 bis ca. 2 Milliarden Unicode-Zeichen
UInteger- UInt32 4 Byte 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)
Benutzerdefiniert (Struktur) (erbt von ValueType) Hängt von der Implementierungsplattform ab Jedes Element der Struktur weist einen Bereich auf, der durch den Datentyp bestimmt wird und unabhängig von den Bereichen der anderen Member ist.
UShort- UInt16 2 Bytes 0 bis 65.535 (nicht signiert)

In der wissenschaftlichen Schreibweise bezieht sich "E" auf eine Potenz von 10. 3,56E+2 bedeutet also 3,56 x 102 oder 356, und 3,56E-2 bedeutet 3,56 / 102 oder 0,0356.

Hinweis

Verwenden Sie für Zeichenfolgen, die Text enthalten, die StrConv Funktion, um von einem Textformat in ein anderes zu konvertieren.

Zusätzlich zur Angabe eines Datentyps in einer Deklarationsanweisung können Sie den Datentyp einiger Programmierelemente mithilfe eines Typzeichens erzwingen. Siehe "Zeichen eingeben".

Arbeitsspeicherverbrauch

Wenn Sie einen elementaren Datentyp deklarieren, ist es nicht sicher, davon auszugehen, dass die Speicherauslastung mit der nominalen Speicherzuweisung übereinstimmt. Dies liegt an den folgenden Überlegungen:

  • Speicherzuweisung. Die Common Language Runtime kann Speicher basierend auf den aktuellen Merkmalen der Plattform zuweisen, auf der Ihre Anwendung ausgeführt wird. Wenn der Arbeitsspeicher fast voll ist, kann es Ihre deklarierten Elemente so eng wie möglich packen. In anderen Fällen können sie ihre Speicheradressen an natürliche Hardwaregrenzen ausrichten, um die Leistung zu optimieren.

  • Plattformbreite. Die Speicherzuweisung auf einer 64-Bit-Plattform unterscheidet sich von der Zuweisung auf einer 32-Bit-Plattform.

Zusammengesetzte Datentypen

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

  • Gemeinkosten. Einige zusammengesetzte Typen verfügen über zusätzliche Speicheranforderungen. Ein Array verwendet beispielsweise 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.

  • Speicherlayout. Sie können nicht sicher davon ausgehen, dass die Reihenfolge des Speichers im Arbeitsspeicher mit ihrer Reihenfolge der Deklaration identisch ist. Sie können keine Annahmen über die Byteausrichtung treffen, z. B. eine 2-Byte- oder 4-Byte-Grenze. Wenn Sie eine Klasse oder Struktur definieren und das Speicherlayout seiner Member steuern müssen, können Sie das StructLayoutAttribute Attribut auf die Klasse oder Struktur anwenden.

Objektaufwand

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

Siehe auch