資料型別是 .NET Framework 型別
更新:2007 年 11 月
Visual Basic 中的每個基礎資料型別,都受到 System 命名空間中的結構或類別所支援。編譯器使用每個資料型別關鍵字做為基礎結構或類別的別名。例如,利用保留字 Byte 宣告變數,與利用完整結構名稱 System.Byte 宣告變數並無不同。
.NET Framework 中也可使用其他的類別和結構
Common Language Runtime (CLR) 也支援 Visual Basic 不提供的結構和類別。例如,System.Guid 結構提供全域唯一識別項 (GUID),而 System.TimeZone 類別則支援時區。您可以使用這些型別宣告變數和常數,並可以存取 .NET Framework 實作這些型別的方法。然而對於未提供的型別,Visual Basic 不支援相關作業或型別轉換。
實值型別和參考型別
在 .NET Framework 中,結構是屬於「實值型別」(Value Type),而類別則是屬於「參考型別」(Reference Type)。基於這個原因,像 Char 和 Integer 這類的實值型別是由 .NET Framework 結構所實作,然而像 Object 和 String 這類的參考型別則是受到 .NET Framework 類別所支援。請注意,每個陣列即代表參考型別,即使其成員屬於實值型別。而每個結構則代表實值型別,即使它具有參考型別成員。
由於每個參考型別都分別代表著一個基礎 .NET Framework 類別,因此在初始化時您必須使用 New (Visual Basic) 關鍵字。下列陳述式會進行陣列初始化。
Dim totals() As Single = New Single(8) {}
您也可以使用 New 關鍵字來初始化實值型別。若型別具有包含參數的建構函式 (Constructor) 則特別適用。Decimal(Int32, Int32, Int32, Boolean, Byte) 建構函式是這種範例中的一個,它會依據提供的組件建置新的 Decimal 值。
資料型別具有成員
由於受到 .NET Framework 結構和類別的支援,所以 Visual Basic 資料型別具有「成員」(Member)。這些成員包括有建構函式、方法、屬性及欄位。您可以在變數上存取成員 (不包括建構函式),方式則與您存取物件上的方法及屬性相同。
下列範例使用 System.DateTime 結構的 Year、Month 和 Day 屬性以及 DaysInMonth 方法,以判斷當月還有多少天。
Dim current As Date = Now
Dim daysRemaining As Integer
daysRemaining = Date.DaysInMonth(current.Year, current.Month) - current.Day
請注意,您必須使用型別的名稱 (Date) 或宣告為該型別的變數名稱 (current),以限定資料型別成員的參考。
資料型別成員的範例
下列程式碼原型 (Prototype) 將說明資料型別中一些有用的方法、屬性和欄位。
<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>.
所有數字型別 (Numeric Type),包括 Byte 和 Char,會公開 MaxValue 和 MinValue 公用欄位,這在處理這些型別時很有用。
不保證資料型別成員的等價
.NET Framework 也提供數個資料型別方法,看起來似乎是 Visual Basic 函式和關鍵字的對等用法。然而,Visual Basic 並非一定會使用 .NET Framework 方法來達成轉換或其他作業,因此結果未必會相同。
例如,ToSingle 方法對於 Decimal 運算式所執行的動作類型,與 CSng 關鍵字所執行的相同。但是,CSng 並不保證會使用 System.dataType.ToSingle,因此在邊際或界限條件下結果也未必相同。
一般而言,您應該要使用 Visual Basic 程式設計項目,因為它們較容易使用,並可以讓程式碼更易於閱讀。在某些情況下,可能會需要一些由 .NET Framework 方法提供的其他功能。如需這部分的相關範例,請參閱資料型別疑難排解中的「Mod 運算子沒有傳回精確的結果」。