Datentyp: Zusammenfassung (Visual Basic)
Aktualisiert: November 2007
In der folgenden Tabelle sind die Datentypen von Visual Basic, die Typen der Common Language Runtime, die sie unterstützen, und die entsprechenden nominalen Speicherzuordnungen und Wertbereiche aufgeführt.
Visual Basic-Datentyp |
Common Language Runtime-Typstruktur |
Nominale Speicherzuordnung |
Wertbereich |
---|---|---|---|
Abhängig von Implementierungsplattform |
True oder False |
||
1 Byte |
0 bis 255 (ohne Vorzeichen) |
||
Char (einzelnes Zeichen) |
2 Bytes |
0 bis 65535 (ohne Vorzeichen). |
|
8 Bytes |
0:00:00 (Mitternacht), 1. Januar 0001 bis 23:59:59, 31. Dezember 9999. |
||
16 Bytes |
0 bis +/-79.228.162.514.264.337.593.543.950.335 (+/-7,9...E+28) † ohne Dezimalzeichen; 0 bis +/-7,9228162514264337593543950335 mit 28 Stellen rechts vom Dezimalzeichen; kleinste Zahl ungleich 0 (null) ist +/-0,0000000000000000000000000001 (+/-1E-28) † |
||
Double (Gleitkommawert mit doppelter Genauigkeit) |
8 Bytes |
-1,79769313486231570E+308 bis -4,94065645841246544E-324 † für negative Werte; 4,94065645841246544E-324 bis 1,79769313486231570E+308 † für positive Werte |
|
4 Bytes |
-2.147.483.648 bis 2.147.483.647 (mit Vorzeichen) |
||
Long (lange ganze Zahl) |
8 Bytes |
-9.223.372.036.854.775.808 bis 9.223.372.036.854.775.807 (9,2... E+18 †) (mit Vorzeichen) |
|
Object (Klasse) |
4 Bytes auf 32-Bit-Plattform 8 Bytes auf 64-Bit-Plattform |
In einer Variablen vom Typ Object kann jeder beliebige Typ gespeichert werden. |
|
1 Byte |
-128 bis 127 (mit Vorzeichen) |
||
Short (kurze ganze Zahl) |
2 Bytes |
-32.768 bis 32.767 (mit Vorzeichen) |
|
Single (Gleitkommawert mit einfacher Genauigkeit) |
4 Bytes |
-3,4028235E+38 bis -1,401298E-45 † für negative Werte; 1,401298E-45 bis 3,4028235E+38 † für positive Werte |
|
String (variable Länge) |
String (Klasse) |
Abhängig von Implementierungsplattform |
0 bis ungefähr 2 Milliarden Unicode-Zeichen |
4 Bytes |
0 bis 4.294.967.295 (ohne Vorzeichen) |
||
8 Bytes |
0 bis 18.446.744.073.709.551.615 (1,8... E+19 †) (ohne Vorzeichen) |
||
Benutzerdefiniert (Struktur) |
(erbt von ValueType) |
Abhängig von Implementierungsplattform |
Jeder Member in der Struktur hat einen Wertbereich, der von seinem Datentyp bestimmt wird. Dieser ist unabhängig von den Wertbereichen der anderen Member. |
2 Bytes |
0 bis 65.535 (ohne Vorzeichen) |
† In der wissenschaftlichen Schreibweise steht "E" für eine Potenz zur Basis 10. Daher ist 3,56E+2 gleichbedeutend mit 3.56 x 102 oder 356, und 3,56E-2 ist gleichbedeutend mit 3.56 / 102 oder 0,0356.
Hinweis: |
---|
Bei Zeichenfolgen mit Text verwenden Sie die StrConv-Funktion zum Konvertieren zwischen verschiedenen Textformaten. |
Speicherverbrauch
Wenn ein elementarer Datentyp deklariert wird, können Sie nicht davon ausgehen, dass sein Speicherverbrauch dem seiner nominalen Speicherzuordnung entspricht. Dies lässt sich wie folgt begründen:
Speicherzuweisung. Die Speicherzuweisung durch die Common Language Runtime geschieht auf der Grundlage der Merkmale der Plattform, auf der die Anwendung ausgeführt wird. Wenn der Arbeitsspeicher beinahe erschöpft ist, werden die deklarierten Elemente u. U. möglichst eng zusammengepackt. In anderen Fällen werden die Speicheradressen möglicherweise an den gegebenen Hardwarebegrenzungen ausgerichtet, um die Leistung zu optimieren.
Plattformbreite. Die Speicherzuweisung auf einer 64-Bit-Plattform unterscheidet sich von der Speicherzuweisung auf einer 32-Bit-Plattform.
Zusammengesetzte Datentypen
Dasselbe gilt für die einzelnen Member zusammengesetzter Datentypen, wie Strukturen und Arrays. Die einfache Addition der nominalen Speicherzuordnungen aller Member des Datentyps liefert kein zuverlässiges Ergebnis. Überdies sind andere Dinge zu berücksichtigen, z. B. Folgendes:
Zusatzaufwand. Bestimmte zusammengesetzte Typen erfordern darüber hinaus zusätzlichen Speicher. Arrays verwenden beispielsweise zusätzlichen Speicher für das Array selbst und die einzelnen Dimensionen. Auf einer 32-Bit-Plattform beträgt diese zusätzliche Kapazität derzeit 12 Bytes plus 8 Bytes pro Dimension. Auf einer 64-Bit-Plattform verdoppeln sich die Anforderungen.
Speicherlayout. Sie können nicht davon ausgehen, dass die Member im Speicher in der gleichen Reihenfolge wie in der Deklaration angeordnet sind. Sie können nicht einmal Vorhersagen über die Byteausrichtung (z. B. 2-Byte- oder 4-Byte-Grenze) treffen. Wenn Sie eine Klasse oder Struktur definieren und das Speicherlayout deren Member steuern müssen, können Sie das StructLayoutAttribute-Attribut auf die Klasse oder Struktur anwenden.
Zusatzaufwand für den Object-Datentyp
Ein Object, das auf einen elementaren oder zusammengesetzten Datentyp verweist, verwendet zusätzlich zu den im Datentyp enthaltenen Daten weitere 4 Bytes.
Siehe auch
Konzepte
Effiziente Verwendung von Datentypen
Referenz
Funktionen für die Typkonvertierung