Blog Stats

  • Blogs - 41
  • Posts - 4115
  • Articles - 185
  • Comments - 22994
  • Trackbacks - 935

Bloggers (posts, last update)

Powered By:
Powered by Subtext

Latest Posts

Video su VB 2015 aggiornato con NameOf e String interpolation

Tempo fa, pubblicai una serie di video dedicata alle novità di Visual Basic 2015 nell'area Video del nostro sito, basati su Visual Studio 2015 Preview.

Con le due CTP 5 e 6, sono stati finalmente introdotti l'operatore NameOf e la String interpolation, due grandissime novità del linguaggio, pertanto ho anche appena caricato una versione aggiornata del video che ne parla in modo da poterne vedere l'utilizzo in un ambiente effettivamente funzionante.

Alessandro

posted @ 27/02/2015 17:29 by Alessandro Del Sole

String interpolation in Visual Basic 2015

Con il rilascio della CTP 6 di Visual Studio 2015, è finalmente disponibile una nuova funzionalità di Visual Basic nota come string interpolation. Con la string interpolation è possibile formattare stringhe utilizzando parametri direttamente all'interno della stringa e con l'aiuto dell'IntelliSense, consentendo di scrivere codice molto più pulito ed elegante rispetto a String.Format o metodi che supportano la stessa sintassi.

Per capirne il funzionamento, una semplice classe Person:
Class Person
    
Property FirstName As String
    
Property LastName As String
    
Property Height As Double
End Class
E un'istanza della stessa:
Dim p As New Person With {.FirstName = "Alessandro", .LastName = "Del Sole", .Height = 175}
Ora, con String.Format scriveremmo:
        Dim firstFormat = String.Format("Today is {0}, you are {1} {2} and you are {3:0.00} tall",
                                       
Date.Today.ToShortDateString,
                                       p.FirstName, p.LastName, p.Height)
Oppure potremmo utilizzare la consueta forma di concatenazione mediante l'operatore & o il +. Con la string interpolation diventa:
        Dim secondFormat = $"Today is {Date.Today.ToShortDateString}, you are {p.FirstName}
                           
{p.LastName} and you are {p.Height:0.00} tall"
Il simbolo $ precedente la stringa indica che si utilizza la string interpolation. Come vedete, il codice è molto più pulito. I valori da formattare sono direttamente all'interno della stringa, non ci sono più i placeholder numerici poco eleganti e molto confusionari e ho IntelliSense direttamente nella stringa. In più, posso utilizzare le modalità di formattazione dei tipi con le modalità consuete, come nell'esempio della proprietà Height. La string interpolation ha molti altri vantaggi, ad esempio potrei creare una query string oppure un indirizzo Internet in modo molto più pulito e funzionale:
        Dim filepath = $"{drive}:\{path}\{file}.{ext}"
        
Dim query = $"{url}?arg1={x}&arg2={y}"
Di tutte le novità di VB 2015, questa è probabilmente la mia preferita. Ci sono infinite possibilità di utilizzo legate alla string interpolation, che permetteranno di scrivere codice decisamente più pulito ed efficiente.

Alessandro

posted @ 25/02/2015 22:17 by Alessandro Del Sole

Visual Studio 2015 CTP 6 disponibile

Ieri è stata rilasciata una nuova preview di Visual Studio 2015, denominata CTP 6. Sono stati fatti molti passi avanti rispetto a una CTP 5 per molti aspetti poco utilizzabile, sono stati fixati molti bug, sono stati introdotti nuovi tool e, con mio grande piacere, una delle novità di Visual Basic 2015 è finalmente utilizzabile, ossia la string interpolation di cui vi parlerò in un post separato.

Dal punto di vista di Roslyn, ossia la .NET Compiler Platform, c'è stata qualche variazione nelle API ma niente di trascendentale. Di buono c'è che ora i progetti per gli analyzer vengono generati già col supporto alla localizzazione.

Notizie e download qui.

Alessandro

posted @ 24/02/2015 20:49 by Alessandro Del Sole

Nuovo ebook gratuito su Windows AppStudio

Molti di voi conoscono Windows AppStudio, strumento online di Microsoft per la creazione di Universal Windows app basata su template e particolarmente adatto ai meno esperti.

Al riguardo vi segnalo la pubblicazione di un eBook gratuito dedicato a questo strumento e realizzato da una cara amica, Sara Silva, MVP portoghese esperta in Store app.

Ho avuto il piacere di poterle dare qualche piccola dritta "formale" e sono contento che sia riuscita a raggiungere questo obiettivo.

Download qui.

Alessandro

posted @ 09/02/2015 16:31 by Alessandro Del Sole

Licenza Community per Syncfusion Essential Studio

La Syncfusion, leader nel mercato dei controlli di terze parti per ambiente .NET, offre una licenza "community" gratuita della sua popolare ed eccezionale suite di controlli Essential Studio, per Windows desktop, mobile (inclusi Xamarin, Win Phone, WinRT, iOS...), Web, LightSwitch e molto altro.

La licenza community è essenzialmente gratuita per sviluppatori singoli e piccole aziende individuate secondo i termini della licenza stessa.

Maggiori info e download qui.

Alessandro

posted @ 07/02/2015 15:21 by Alessandro Del Sole

Visual Basic 2015: L'operatore NameOf

Visual Basic 2015 introduce un nuovo operatore chiamato NameOf. Il suo scopo è quello di generare al volo una costante che rappresenti stringhe, che a loro volta siano il nome di oggetti.

Per capirci, considerate il seguente codice che solleva un'eccezione se il parametro è nullo:
    Sub OpenFile(fileName As String)
        'Vecchia sintassi
        
If String.IsNullOrWhiteSpace(fileName) Then
            
Throw New ArgumentNullException("fileName")
        
End If
    
End Sub
In questo caso, il nome dell'argomento viene passato come una vera e propria stringa, anche col rischio di errori di digitazione. Con NameOf, tutto si può riscrivere in questo modo:
    Sub OpenFile(fileName As String)
        
'Nuova sintassi
        
If String.IsNullOrWhiteSpace(fileName) Then
            
Throw New ArgumentNullException(NameOf(fileName))
        
End If
    
End Sub
Il vantaggio? avere IntelliSense che consente di recuperare facilmente il nome dell'espressione da rappresentare. Un altro esempio, in cui una classe implementa INotifyPropertyChanged e deve passare il nome della proprietà che ha subito la modifica. Senza NameOf, il nome della proprietà viene passata come stringa. Con NameOf, si riscrive in questo modo, molto più efficiente e senza rischio di errori:
Class Person
    
Implements INotifyPropertyChanged
    
Private _firstName As String
    
Public Property FirstName As String
        
Get
            
Return _firstName
        
End Get
        
Set(value As String)
            
Me._firstName = value
            
RaiseEvent PropertyChanged(Me,
                                       
New PropertyChangedEventArgs(NameOf(FirstName)))
        
End Set
    
End Property

    
Public Event PropertyChanged As PropertyChangedEventHandler _
        
Implements INotifyPropertyChanged.PropertyChanged
End Class
NameOf si può usare anche con membri di oggetti separati dal classico punto (.).

Alessandro

posted @ 07/02/2015 14:43 by Alessandro Del Sole

Visual Basic 2015: Sub New nelle Structure

Gli oggetti Structure, in Visual Basic, rappresentano i tipi valore. Una novità in Visual Basic 2015 riguarda il supporto per il costruttore di istanza senza argomenti.

In buona sostanza, è ora invocabile il costruttore senza parametri come quello definito di seguito:

Structure MyStruct
    
Property X As Double
    
Property Y As Double
    
Property Z As Double

    
Public Sub New()
        X = 1
        Y = 1
        Z = 1
    
End Sub

    
Public Sub New(x As Double, y As Double, z As Double)
        
Me.X = x
        
Me.Y = y
        
Me.Z = z
    
End Sub
End Structure
A questo punto le possibilità di utilizzo sono le seguenti 3, con i relativi commenti:
        'Modo classico: istanzia e valorizza la struttura
        
Dim struct As New MyStruct(1, 2, 3)

        
'Modo classico: dichiara una struttura nulla
        
'e non invoca costruttori
        
Dim struct1 As MyStruct = Nothing

        
'Modo nuovo: istanza con valori di default
        
Dim struct2 As New MyStruct
Questa possibilità consente di valorizzare nel modo di default più appropriato l'istanza della struttura.

Alessandro

posted @ 07/02/2015 14:30 by Alessandro Del Sole

Visual Basic 2015: TypeOf..IsNot

Visual Basic 2015 introduce il supporto al costrutto TypeOf..IsNot. In sostanza, la seguente forma è ora accettata:
    Sub TestObject(param As Object)
        
If TypeOf param IsNot String Then
            
Throw New ArgumentException("value is not a String")
        
End If
    
End Sub
In precedenza, invece, l'unica consentita era la seguente, con Not TypeOf..Is:
    Sub TestObject(param As Object)
        If Not TypeOf param Is String Then
            
Throw New ArgumentException("value is not a String")
        
End If
    
End Sub
Alessandro

posted @ 07/02/2015 14:23 by Alessandro Del Sole

Visual Basic 2015: Commenti dopo implicit line continuation

Come sapete, da qualche anno non è più necessario utilizzare il carattere di underscore _ per andare a capo nel codice Visual Basic, quanto meno in una serie di specifici contesti, caratteristica nota come implicit line continuation.

Spesso, però, si ha la necessità di scrivere commenti proprio in corrispondenza della implicit line continuation. Nelle precedenti versioni del linguaggio, ciò non era possibile. Ora è invece possibile e consente di commentare blocchi di codice come questo:
        Dim query = From proc In Process.GetProcesses 'Ottiene l'elenco dei processi
                    
Where proc.PriorityClass = ProcessPriorityClass.AboveNormal 'Filtra quelli con priorità alta
                    
Select proc 'lo aggiunge al risultato
In questo modo si può commentare anche ogni singola riga di una query LINQ, cosa impensabile in VB 2012.

Molto molto utile.

Alessandro

posted @ 06/02/2015 00:54 by Alessandro Del Sole

Visual Basic 2015: Multi-line string literals

Visual Basic 2015 introduce una nuova caratteristica tipica dell'editor di codice, nota come multi-line string literals. Questa risolve un'annosa questione relativa alla possibilità di andare a capo scrivendo lunghe stringhe in variabili o oggetti di tipo stringa. Ecco un esempio:
        Dim longString = "Questa è una stringa
molto lunga, che ha lo scopo di
dimostrare la nuova funzionalità di VB 2015
nota come multiline string literals"
Nota bene: la stringa apparirà così come si vede, inclusi i terminatori. Inoltre, non c'è indentazione nell'editor e quindi ogni volta che si va a capo, la riga successiva è praticamente attaccata al bordo dell'editor.

Provate a visualizzare la stringa con un banale Console.Writeline per vedere come viene interpretata e utilizzata da .NET.

Alessandro

posted @ 06/02/2015 00:49 by Alessandro Del Sole