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 als Object .

    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: Anoniem type - Optie Afleiden Aan

  • Optie Afleiden Uit
    De compiler geeft een foutmelding (met Option Strict On )
    of beschouwt q als type object (met Option 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


Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow