Alessandro Del Sole's Blog

{ A programming space about Microsoft® .NET® }
posts - 1909, comments - 2047, trackbacks - 352

My Links

News

Your host

This is me! Questo spazio è dedicato a Microsoft® .NET®, di cui sono molto appassionato :-)

Cookie e Privacy

Microsoft MVP

My MVP Profile

Microsoft Certified Professional

Microsoft Specialist

Xamarin Certified Mobile Developer

Il mio libro su VB 2015!

Pre-ordina il mio libro su VB 2015 Pre-ordina il mio libro "Visual Basic 2015 Unleashed". Clicca sulla copertina per informazioni!

Il mio libro su WPF 4.5.1!

Clicca sulla copertina per informazioni! E' uscito il mio libro "Programmare con WPF 4.5.1". Clicca sulla copertina per informazioni!

These postings are provided 'AS IS' for entertainment purposes only with absolutely no warranty expressed or implied and confer no rights.
If you're not an Italian user, please visit my English blog

Le vostre visite

I'm a VB!

Guarda la mia intervista a Seattle

Follow me on Twitter!

Altri spazi

GitHub
I miei progetti open-source su GitHub

Article Categories

Archives

Post Categories

Image Galleries

Privacy Policy

LINQ e Option Strict On

Nel forum di Visual Basic Tips & Tricks dedicato a LINQ si è parlato di una eventuale conflittualità tra l'utilizzo della clausola Option Strict On e LINQ che, come noto, sfrutta l'inferenza dei tipi, che pertanto non debbono essere dichiarati esplicitamente, contrariamente a quanto si richiede con Strict On attivo.

L'inferenza dei tipi è attivata per default nelle opzioni del compilatore ed è determinabile, via codice, da Option Infer On/Off. Considerate la seguente banalissima applicazione Console:

Option Strict On

 

Module Module1

 

    'Solleva un errore perchè il tipo non è specificato

    Private Variabile

 

    Sub Main()

 

        'Funziona per inferenza

        Dim elenco = From processo In Process.GetProcesses _

                   Select processo

 

        For Each e In elenco

            Console.WriteLine(e.Id)

        Next

        Console.ReadLine()

    End Sub

End Module

La dichiarazione del campo Variabile solleva un errore, poichè avendo attivato Option Strict On è necessario specificare il tipo di dato da assegnare. Lo stesso non avviene per il campo Elenco, assegnatario del risultato di una query expression. Questo perchè, come detto, il tipo di dato viene determinato per inferenza.

A tale riguardo è necessario ricordare che l'inferenza dei tipi è locale (per questo si chiama Local Type Inference) e non a livello di classe/modulo.

Tutto questo per dire che si può (e si dovrebbe sempre) utilizzare Option Strict On senza avere paura di perdere i benefici dell'inferenza in ambito LINQ.

Alessandro

Print | posted on lunedì 21 aprile 2008 01:11 | Filed Under [ Visual Basic LINQ ]

Powered by:
Powered By Subtext Powered By ASP.NET