Datentypen sind .NET Framework-Typen

Aktualisiert: November 2007

Jeder elementare Datentyp in Visual Basic wird von einer Struktur oder Klasse im System-Namespace unterstützt. Der Compiler verwendet jedes Datentypschlüsselwort als Alias für die zugrunde liegende Struktur oder Klasse. Wenn Sie eine Variable z. B. mit dem reservierten Wort Byte deklarieren, hat dies denselben Effekt, als wenn Sie den voll qualifizierten Strukturnamen System.Byte verwenden.

Zusätzliche Klassen und Strukturen sind in .NET Framework verfügbar

Die Common Language Runtime (CLR) unterstützt auch Strukturen und Klassen, die in Visual Basic nicht zur Verfügung stehen. Die System.Guid-Struktur stellt beispielsweise einen global eindeutigen Bezeichner (GUID - Globally Unique Identifier) zur Verfügung, und die System.TimeZone-Klasse unterstützt eine Zeitzone. Sie können diese Typen zum Deklarieren von Variablen und Konstanten verwenden und auf die Methoden zugreifen, die von .NET Framework für diese Typen implementiert werden. Visual Basic unterstützt jedoch keine Vorgänge oder Typkonvertierungen mit fremden Typen.

Wert- und Referenztypen

In .NET Framework ist eine Struktur ein Werttyp und eine Klasse ein Referenztyp. Daher werden Werttypen wie Char und Integer von .NET Framework-Strukturen implementiert, während Referenztypen wie Object und String von .NET Framework-Klassen unterstützt werden. Alle Arrays sind Referenztypen, auch wenn seine Member Werttypen sind. Alle Strukturen sind Werttypen, auch wenn sie Referenztypmember besitzen.

Da jeder Referenztyp eine zugrunde liegende .NET Framework-Klasse darstellt, müssen Sie bei der Initialisierung das Schlüsselwort New (Visual Basic) verwenden. Mit der folgenden Anweisung wird ein Array initialisiert.

Dim totals() As Single = New Single(8) {}

Sie können das New-Schlüsselwort auch verwenden, um einen Werttyp zu initialisieren. Dies ist besonders nützlich, wenn der Typ einen Konstruktor besitzt, der Parameter verwendet. Ein Beispiel dafür ist der Decimal(Int32, Int32, Int32, Boolean, Byte)-Konstruktor, der einen neuen Decimal-Wert aus den bereitgestellten Teilen erstellt.

Datentypen verfügen über Member

Da sie von .NET Framework-Strukturen und -Klassen unterstützt werden, besitzen Visual Basic-Datentypen Member. Dazu gehören Konstruktoren, Methoden, Eigenschaften und Felder. Sie können auf die Member (mit Ausnahme der Konstruktoren) für eine Variable genau so wie auf Methoden und Eigenschaften für ein Objekt zugreifen.

Im folgenden Beispiel werden die Eigenschaften Year, Month und Day sowie die DaysInMonth-Methode der System.DateTime-Struktur verwendet, um die verbleibende Anzahl von Tagen im aktuellen Monat zu ermitteln.

Dim current As Date = Now
Dim daysRemaining As Integer
daysRemaining = Date.DaysInMonth(current.Year, current.Month) - current.Day

Beachten Sie, dass Sie einen Verweis auf einen Datentypmember entweder mit dem Namen des Typs (Date) oder dem Namen einer Variablen qualifizieren müssen, die als dieser Typ deklariert wurde (current).

Beispiele der Datentypmember

In den folgenden Codeprototypen werden einige der nützlichen Methoden, Eigenschaften und Felder für die Datentypen veranschaulicht.

<Char>.IsDigit() ' Returns True if character is a numeric digit.

<Char>.IsLower() ' Returns True if character is a lowercase letter.

<Date>.IsLeapYear() ' Returns True if current year is a leap year.

<Date>.ToUniversalTime() ' Returns local date/time converted to UTC.

<Double>.IsInfinity() ' Returns True if contents represent infinity.

<Double>.IsNaN() ' Returns True if contents are not a number (0/0).

<Long>.MaxValue ' Constant representing largest positive Int64 value.

<Object>.GetType() ' Returns Type object representing type of <Object>.

<Object>.GetType().GetTypeCode() ' Returns type code of <Object>.

<String>.Chars(<index>) ' Character at position <index> of <String>.

<String>.Length ' Number of characters currently in <String>.

Alle numerischen Typen, einschließlich Byte und Char, machen die öffentlichen Felder MaxValue und MinValue verfügbar, was bei der Verwendung dieser Typen sehr hilfreich sein kann.

Äquivalenz der Datentypmember ist nicht gewährleistet

.NET Framework bietet auch verschiedene Methoden für Datentypen, die den Anschein erwecken, Visual Basic-Funktionen und -Schlüsselwörtern zu entsprechen. Allerdings verwendet Visual Basic für Konvertierungen oder andere Vorgänge nicht immer die .NET Framework-Methoden, und die Ergebnisse stimmen nicht immer überein.

Die ToSingle-Methode hat dieselbe Funktion wie das CSng-Schlüsselwort für einen Decimal-Ausdruck. Es kann jedoch nicht gewährleistet werden, dass CSng den System.Datentyp.ToSingle verwendet. Daher können die Ergebnisse in Grenzfällen oder unter Ausnahmebedingungen abweichen.

Im Allgemeinen sollten Sie die Visual Basic-Programmierelemente verwenden, da sie einfacher zu handhaben sind und der Code damit besser lesbar ist. In einigen Fällen können zusätzliche Funktionen erforderlich sein, die durch .NET Framework-Methoden bereitgestellt werden. Ein Beispiel dafür finden Sie unter "Der Mod-Operator gibt kein präzises Ergebnis zurück" unter Problembehandlung bei Datentypen.

Siehe auch

Konzepte

Wert- und Verweistypen

Strukturen und Klassen

Referenz

Boolean

Byte

Char

DateTime

Decimal

Double

Guid

TimeZone