Visual Basic .NET Language
Optie Afleiden
Zoeken…
Wat is het?
Maakt het gebruik van lokale type inferentie mogelijk bij het declareren van variabelen.
Wat is type inferentie?
U kunt lokale variabelen declareren zonder expliciet een gegevenstype te vermelden. De compiler leidt het gegevenstype van een variabele af van het type initialisatie-expressie.
Optie Afleiding Aan :
Dim aString = "1234" '--> Will be treated as String by the compiler
Dim aNumber = 4711 '--> Will be treated as Integer by the compiler
versus expliciete typeaangifte:
'State a type explicitly
Dim aString as String = "1234"
Dim aNumber as Integer = 4711
Optie Afleiden Uit:
Het gedrag van de compiler met Option Infer Off
afhankelijk van de Option Strict
instelling die hier al is gedocumenteerd .
Optie Afleiden Uit - Optie Strikt Uit
Alle variabelen zonder expliciete typeaangiften worden gedeclareerd alsObject
.Dim aString = "1234" '--> Will be treated as Object by the compiler
Optie Afleiden Uit - Optie Strikt Aan
De compiler laat je geen variabele declareren zonder een expliciet type.'Dim aString = "1234" '--> Will not compile due to missing type in declaration
Hoe het in / uit te schakelen
Documentniveau
Het is standaard ingeschakeld, maar u kunt het instellen door Option Infer On|Off
boven aan het Option Infer On|Off
plaatsen. De optie is van toepassing op het hele document.
Project niveau
U kunt deze in- / uitschakelen via het menu in Visual Studio:
Project> [Project] Eigenschappen> tabblad Compileren> Optie-afleiding
Kies On|Off
in het vervolgkeuzemenu. De optie is van toepassing op het hele document.
Alle nieuwe projecten
U kunt het standaard inschakelen voor alle nieuwe projecten door te selecteren:
Hulpmiddelen> Opties> Projecten en oplossingen> VB-standaardwaarden> Optie afgeleid
Kies On|Off
in het vervolgkeuzemenu.
Wanneer type-inferentie gebruiken
In principe kunt u type-inferentie gebruiken wanneer dit mogelijk is.
Wees echter voorzichtig bij het combineren van Option Infer Off
en Option Strict Off
, omdat dit kan leiden tot ongewenst runtime-gedrag:
Dim someVar = 5
someVar.GetType.ToString() '--> System.Int32
someVar = "abc"
someVar.GetType.ToString() '--> System.String
Anoniem type
Anonieme typen kunnen alleen worden gedeclareerd met Option Infer On
.
Ze worden vaak gebruikt bij het omgaan met 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)}
Optie Afleiden Aan
De compiler zal het anonieme type herkennen:Optie Afleiden Uit
De compiler geeft een foutmelding (metOption Strict On
)
of beschouwtq
als typeobject
(metOption Strict Off
).
Beide gevallen zullen het resultaat opleveren dat u het anonieme type niet kunt gebruiken.
Doubles / Decimals
Numerieke variabelen met decimalen worden standaard afgeleid als Double
:
Dim aNumber = 44.11 '--> Will be treated as type `Double` by the compiler
Als een ander type zoals Decimal
gewenst is, moet de waarde die de variabele heeft geïnitialiseerd worden gemarkeerd:
Dim mDecimal = 47.11D '--> Will be treated as type `Decimal` by the compiler