Variant 是一種特殊的數(shù)據(jù)類型,除了定長 String 數(shù)據(jù)及用戶定義類型外,可以包含任何種類的數(shù)據(jù)。Variant 也可以包含 Empty、Error、Nothing 及 Null等特殊值。可以用 VarType 函數(shù)或 TypeName 函數(shù)來決定如何處理 Variant 中的數(shù)據(jù)。
數(shù)值數(shù)據(jù)可以是任何整型或?qū)嵭蛿?shù),負(fù)數(shù)時范圍從 -1.797693134862315E308 到 -4.94066E-324,正數(shù)時則從 4.94066E-324 到 1.797693134862315E308。通常,數(shù)值Variant 數(shù)據(jù)保持為其 Variant 中原來的數(shù)據(jù)類型。例如,如果把一個 Integer賦值給 Variant,則接下來的運算會把此 Variant 當(dāng)成 Integer 來處理。然而,如果算術(shù)運算針對含 Byte、Integer、Long 或 Single 之一的Variant 執(zhí)行,并當(dāng)結(jié)果超過原來數(shù)據(jù)類型的正常范圍時,則在 Variant 中的結(jié)果會提升到較大的數(shù)據(jù)類型。如 Byte 則提升到 Integer,Integer 則提升到 Long,而 Long和Single 則提升為 Double。當(dāng) Variant 變量中有 Currency、Decimal 及 Double 值超過它們各自的范圍時,會發(fā)生錯誤。
可以用 Variant 數(shù)據(jù)類型來替換任何數(shù)據(jù)類型,這樣會更有適應(yīng)性。如果 Variant 變量的內(nèi)容是數(shù)字,它可以用字符串來表示數(shù)字或是用它實際的值來表示,這將由上下文來決定,例如:
Dim MyVar As VariantMyVar = 98052在前面的例子中,MyVar 內(nèi)有一實際值為 98052 的數(shù)值。像期望的那樣,算術(shù)運算子可以對 Variant 變量運算,其中包含數(shù)值或能被解釋為數(shù)值的字符串?dāng)?shù)據(jù)。如果用 + 運算子來將 MyVar 與其他含有數(shù)字的 Variant 或數(shù)值類型的變量相加,結(jié)果便是一算術(shù)和。
Empty 值用來標(biāo)記尚未初始化(給定初始值)的Variant 變量。內(nèi)含 Empty 的 Variant 在數(shù)值的上下文中表示 0,如果是用在字符串的上下文中則表示零長度的字符串 ("")。
不應(yīng)將 Empty 與 Null 弄混。Null 是表示 Variant 變量確實含有一個無效數(shù)據(jù)。
在 Variant 中,Error 是用來指示在過程中出現(xiàn)錯誤時的特殊值。然而,不像對其他種類的錯誤那樣,程序并不產(chǎn)生普通的應(yīng)用程序級的錯誤處理。這可以讓程序員,或應(yīng)用程序本身,根據(jù)此錯誤值采取另外的行動??梢杂?CVErr 函數(shù)將實數(shù)轉(zhuǎn)換為錯誤值來產(chǎn)生 Error 值。
原創(chuàng)文章,轉(zhuǎn)載請注明: 轉(zhuǎn)載自Blinux
原文鏈接地址: VB Variant數(shù)據(jù)類型