Visual Basic .NET Language
Alternativ Infer
Sök…
Vad är det?
Aktiverar användning av inferens av lokal typ vid deklarering av variabler.
Vad är typinferens?
Du kan deklarera lokala variabler utan att uttryckligen ange en datatyp. Kompilatorn anger datatypen för en variabel från typen av dess initialiseringsuttryck.
Alternativ Avsluta på :
Dim aString = "1234" '--> Will be treated as String by the compiler
Dim aNumber = 4711 '--> Will be treated as Integer by the compiler
mot uttrycklig typdeklaration:
'State a type explicitly
Dim aString as String = "1234"
Dim aNumber as Integer = 4711
Alternativ Avsluta av:
Kompilatorens beteende med Option Infer Off
beror på inställningen Option Strict
som redan är dokumenterad här .
Alternativ Avsluta Av - Alternativ Strikt Av
Alla variabler utan explicita typdeklarationer deklareras somObject
.Dim aString = "1234" '--> Will be treated as Object by the compiler
Alternativ Avlägsna - Alternativ strikt på
Kompilatorn låter dig inte deklarera en variabel utan en uttrycklig typ.'Dim aString = "1234" '--> Will not compile due to missing type in declaration
Hur man aktiverar / inaktiverar det
Dokumentnivå
Den är som standard på, men du kan ställa in den genom att placera Option Infer On|Off
högst upp i kodfilen. Alternativet kommer att gälla för hela dokumentet.
Projektnivå
Du kan slå på / stänga av den via menyn i Visual Studio:
Projekt> [Projekt] Egenskaper> Kompilera flik> Val av slutsats
Välj On|Off
i rullgardinsmenyn. Alternativet kommer att gälla för hela dokumentet.
Alla nya projekt
Du kan slå på den som standard för alla nya projekt genom att välja:
Verktyg> Alternativ> Projekt och lösningar> VB-standard> Alternativ infer
Välj On|Off
i rullgardinsmenyn.
När ska man använda slutsatsen
I grund och botten kan du använda typinferens när det är möjligt.
Var dock försiktig när du kombinerar Option Infer Off
och Option Strict Off
, eftersom det kan leda till oönskat körbeteende:
Dim someVar = 5
someVar.GetType.ToString() '--> System.Int32
someVar = "abc"
someVar.GetType.ToString() '--> System.String
Anonym typ
Anonyma typer kan endast deklareras med Option Infer On
.
De används ofta vid hantering av 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)}
Alternativ Avsluta på
Kompilatorn känner igen den anonyma typen:Alternativ Avsluta
Kompilatorn kommer antingen att kasta ett fel (medOption Strict On
)
eller kommer att betraktaq
somobject
(medOption Strict Off
).
Båda fallen ger resultatet att du inte kan använda den anonyma typen.
Dubbel / Decimals
Numeriska variabler med decimaler kommer att sluts som Double
standard:
Dim aNumber = 44.11 '--> Will be treated as type `Double` by the compiler
Om en annan typ som Decimal
önskas måste värdet som initialiseras variabeln markeras:
Dim mDecimal = 47.11D '--> Will be treated as type `Decimal` by the compiler