在隱式類型的局部變量聲明中,局部變量的類型是通過局部聲明語句右側(cè)的初始值設(shè)定項表達(dá)式推斷的。
例如,編譯器推斷以下所有變量聲明的類型:
以下是引用片段:
Dim population = 31719
Dim name = "Belize"
Dim area = 1.9
Dim country = New Country With { .Name = "Palau", ...}
因此,它們完全等效于以下顯式類型聲明:
以下是引用片段:
Dim population As Integer = 31719
Dim name As String = "Belize"
Dim area As Float = 1.9
Dim country As Country = New Country With { .Name = "Palau", ...}
由于局部變量聲明的類型是通過新增的 Option Infer On(新項目的默認(rèn)值)推斷的,因此不管 Option Strict 的設(shè)置如何,對此類變量的訪問始終是早期綁定的。程序員必須在 Visual Basic 9.0 中顯式指定后期綁定,方法是將變量顯式聲明為 Object 類型,如下所示:
以下是引用片段:
Dim country As Object = New Country With { .Name = "Palau", ... }
推斷類型可防止意外使用后期綁定,更重要的是,它允許為新數(shù)據(jù)類型(如 XML)綁定強(qiáng)大擴(kuò)展,如下所示。
For...Next 或 For Each...Next 語句中的循環(huán)控制變量也可以是隱式類型的變量。指定循環(huán)控制變量時(如 For I = 0 To SmallCountries.Count 或 For Each country In smallCountries 中所示),標(biāo)識符定義一個新的隱式類型局部變量,其類型通過初始值設(shè)定項或集合表達(dá)式推斷且作用于整個循環(huán)。通過應(yīng)用此類型推斷,可以重新編寫打印所有小國家/地區(qū)的循環(huán),如下所示:
以下是引用片段:
For Each country In smallCountries
Console.WriteLine(country.Name)
Next
country 的類型被推斷為 Country,即 SmallCountries 的元素類型。
例如,編譯器推斷以下所有變量聲明的類型:
以下是引用片段:
Dim population = 31719
Dim name = "Belize"
Dim area = 1.9
Dim country = New Country With { .Name = "Palau", ...}
因此,它們完全等效于以下顯式類型聲明:
以下是引用片段:
Dim population As Integer = 31719
Dim name As String = "Belize"
Dim area As Float = 1.9
Dim country As Country = New Country With { .Name = "Palau", ...}
由于局部變量聲明的類型是通過新增的 Option Infer On(新項目的默認(rèn)值)推斷的,因此不管 Option Strict 的設(shè)置如何,對此類變量的訪問始終是早期綁定的。程序員必須在 Visual Basic 9.0 中顯式指定后期綁定,方法是將變量顯式聲明為 Object 類型,如下所示:
以下是引用片段:
Dim country As Object = New Country With { .Name = "Palau", ... }
推斷類型可防止意外使用后期綁定,更重要的是,它允許為新數(shù)據(jù)類型(如 XML)綁定強(qiáng)大擴(kuò)展,如下所示。
For...Next 或 For Each...Next 語句中的循環(huán)控制變量也可以是隱式類型的變量。指定循環(huán)控制變量時(如 For I = 0 To SmallCountries.Count 或 For Each country In smallCountries 中所示),標(biāo)識符定義一個新的隱式類型局部變量,其類型通過初始值設(shè)定項或集合表達(dá)式推斷且作用于整個循環(huán)。通過應(yīng)用此類型推斷,可以重新編寫打印所有小國家/地區(qū)的循環(huán),如下所示:
以下是引用片段:
For Each country In smallCountries
Console.WriteLine(country.Name)
Next
country 的類型被推斷為 Country,即 SmallCountries 的元素類型。