何时使用类型推断
基本上,只要有可能,你就可以使用类型推断。
但是,在组合 Option Infer Off
和 Option Strict Off
时要小心,因为这会导致不希望的运行时行为:
Dim someVar = 5
someVar.GetType.ToString() '--> System.Int32
someVar = "abc"
someVar.GetType.ToString() '--> System.String
匿名类型
匿名类型只能使用 Option Infer On
声明。
在处理 LINQ 时经常使用它们 :
Dim countryCodes = New List(Of String)
countryCodes.Add("en-US")
countryCodes.Add("en-GB")
countryCodes.Add("de-DE")
countryCodes.Add("de-AT")
Dim q = From code In countryCodes
Let split = code.Split("-"c)
Select New With {.Language = split(0), .Country = split(1)}
-
选项推断
编译器将识别匿名类型: -
选项推断关闭
编译器将抛出错误(使用Option Strict On
)
或将q
视为类型object
(使用Option Strict Off
)。
这两种情况都会产生不能使用匿名类型的结果。
双打/小数
默认情况下,带小数位的数字变量将被视为 Double
:
Dim aNumber = 44.11 '--> Will be treated as type `Double` by the compiler
如果需要像 Decimal
这样的其他类型,则需要标记初始化变量的值:
Dim mDecimal = 47.11D '--> Will be treated as type `Decimal` by the compiler