Date post: | 02-May-2015 |
Category: |
Documents |
Upload: | brizio-adamo |
View: | 218 times |
Download: | 2 times |
Visual Basic 2010 - Le novità del linguaggio
Community Tour… la vendemmia
Belluno – 2 Dicembre 2010
Mario De GhettoMicrosoft MVP – Visual Basic DevelopmentIscritto all’Ordine degli Ingegneri di BellunoCommunity DotNetWork.itE-mail [email protected]
Di cosa parliamo…
• continuazione implicita di linea
• il nuovo tipo BigInteger
• proprietà auto-implementate
• Optional Nullable Parameters
• Collection Initializers
• le novità nella manipolazione degli array
• espressioni lambda multi-linea e Statement Lambda
• covarianza e controvarianza
• WPF e Entity Framework: le novità
Di cosa parliamo…
• continuazione implicita di linea
• il nuovo tipo BigInteger
• proprietà auto-implementate
• Optional Nullable Parameters
• Collection Initializers
• le novità nella manipolazione degli array
• espressioni lambda multi-linea e Statement Lambda
• covarianza e controvarianza
• WPF e Entity Framework: le novità
Continuazione implicita di linea
E’ un cambiamento storico per VB: non occorre più il simbolo “_” per continuare una istruzione nella riga successiva, anche senza utilizzare (“;”) come in
C#!
Esempi: dopo la virgola e dopo il punto …
Continuazione implicita di linea
… dopo la clausola From, dopo una parentesigraffa aperta e dopo la virgola …
Continuazione implicita di linea
… nella decorazione di oggetti …
Continuazione implicita di linea
… in una query LINQ …
Otteniamo un maggiore impatto visivo con le istruzioni LINQ perché sembrano sempre di più delle
normali istruzioni SQL.
Continuazione implicita di linea
… in una espressione di LINQ to XML…
Continuazione implicita di linea
Vale solo in precisi contesti, non ovunque.
Per esempio non funziona con la clausola Handles:
Di cosa parliamo…
• continuazione implicita di linea
• il nuovo tipo BigInteger
• proprietà auto-implementate
• Optional Nullable Parameters
• Collection Initializers
• le novità nella manipolazione degli array
• espressioni lambda multi-linea e Statement Lambda
• covarianza e controvarianza
• WPF e Entity Framework: le novità
Il nuovo tipo BigInteger
I precedenti tipi interi avevano un limite troppo stretto, in particolare quando serviva trattare numeri molto grandi per applicazioni scientifiche o statistiche.
BigInteger dà la possibilità di trattare numeri veramente molto grandi, perché non ha limite superiore né inferiore.
Il nuovo tipo BigInteger
Esempio:
Il nuovo tipo BigInteger
Il nuovo tipo BigInteger
Raddoppiando 1.000.000 di volte il numero 2 ottengo un numero lungo oltre 300.000
cifre!!!
Nota: attenzione alle eccezioni OutOfMemoryException
Il nuovo tipo BigInteger
Altri esempi:
Il nuovo tipo BigInteger
Alcune informazioni e curiosità:
• è definito nel namespace System.Numerics come segue:
• è definito come una struttura (Structure)• è serializzabile• BigInteger esiste già da tempo in Java. La versione definita nel .NET Framework 4.0 ha meno metodi ma pare essere veloce almeno il doppio rispetto alla versione Java.
Di cosa parliamo…
• continuazione implicita di linea
• il nuovo tipo BigInteger
• proprietà auto-implementate
• Optional Nullable Parameters
• Collection Initializers
• le novità nella manipolazione degli array
• espressioni lambda multi-linea e Statement Lambda
• covarianza e controvarianza
• WPF e Entity Framework: le novità
Proprietà auto-implementate
Ora possiamo dichiarare una proprietà così (in C# esiste già):
Equivale a scrivere:
Proprietà auto-implementate
Due eccezioni:
(1) Proprietà a sola lettura si definiscono nel solito modo:
Proprietà auto-implementate
(2) Ridefinizione di una proprietà in una classe derivata
Visual Studio 2010 propone tutto il codice della proprietà
Di cosa parliamo…
• continuazione implicita di linea
• il nuovo tipo BigInteger
• proprietà auto-implementate
• Optional Nullable Parameters
• Collection Initializers
• le novità nella manipolazione degli array
• espressioni lambda multi-linea e Statement Lambda
• covarianza e controvarianza
• WPF e Entity Framework: le novità
Optional Nullable Parameters
VB 2010 supporta argomenti di tipo Nullable(Of T) per parametri opzionali all’interno dei metodi. Ora possiamo scrivere:
Optional Nullable Parameters
Se proviamo lo stesso codice con VS 2008otteniamo un errore:
Di cosa parliamo…
• continuazione implicita di linea
• il nuovo tipo BigInteger
• proprietà auto-implementate
• Optional Nullable Parameters
• Collection Initializers
• le novità nella manipolazione degli array
• espressioni lambda multi-linea e Statement Lambda
• covarianza e controvarianza
• WPF e Entity Framework: le novità
Collection Initializers
E’ finalmente possibile definire e inizializzare una collezione nella stessa istruzione.
Collection Initializers
Dietro le quinte:
Collection Initializers
Funziona anche con le nostre classi personalizzate.Supponiamo di avere una classe di questo tipo:
notare l’uso della nuova caratteristica:
le proprietà auto-implementate
Collection Initializers
Possiamo definire i nostri oggetti di tipo Cliente in questo modo:
Collection Initializers
Possiamo poi istanziare una collezione di questi oggetti di tipo Cliente:
Di cosa parliamo…
• continuazione implicita di linea
• il nuovo tipo BigInteger
• proprietà auto-implementate
• Optional Nullable Parameters
• Collection Initializers
• le novità nella manipolazione degli array
• espressioni lambda multi-linea e Statement Lambda
• covarianza e controvarianza
• WPF e Entity Framework: le novità
Le novità nella manipolazionedegli array
Definizione per inferenza:
Le novità nella manipolazionedegli array
Cosa succede in questo caso?
Se Option Strict On si otterrà un ERRORESe Option Strict Off --> array di tipo Object
Le novità nella manipolazionedegli array
Gli Array literals sono una novità
Permettono di dichiarare allo stesso modo sia array multidimensionalisia jagged array
(matrici irregolari o array di array).
Le novità nella manipolazionedegli array
Un array multidimensionale si dichiara così:
Un jagged array (matrice irregolare) si dichiara così:
Le novità nella manipolazionedegli array
L’accesso a un elemento di un jagged array avviene nello stesso modo in cui siamo già abituati:
La variabile Array3 è un array di intericon la coppia di elementi (1, 2)
Di cosa parliamo…
• continuazione implicita di linea
• il nuovo tipo BigInteger
• proprietà auto-implementate
• Optional Nullable Parameters
• Collection Initializers
• le novità nella manipolazione degli array
• espressioni lambda multi-linea e Statement Lambda
• covarianza e controvarianza
• WPF e Entity Framework: le novità
Le espressioni lambda sono state introdotte con Visual Basic 2008 e ora sono state ulteriormente potenziate.
E’ possibile utilizzare espressioni multilinea (senza “_”) e definire all’interno di un’espressione lambda delle Sub e delle Function con i classici costrutti:
Function … End FunctionSub … End Sub
Espressioni lambda multi-linea
Espressioni lambda multi-linea
Esempio: elenco dei processi attivi con nome che inizia per “D”
In VB 2008:
In VB 2010:
Statement Lambda
Lo scorrimento degli elementi lo possiamo fare con queste istruzioni:
Di cosa parliamo…
• continuazione implicita di linea
• il nuovo tipo BigInteger
• proprietà auto-implementate
• Optional Nullable Parameters
• Collection Initializers
• le novità nella manipolazione degli array
• espressioni lambda multi-linea e Statement Lambda
• covarianza e controvarianza
• WPF e Entity Framework: le novità
Covarianza e Controvarianza
Sono due aspetti della VARIANZA GENERICA e riguardano concetti fortemente legati all’ereditarietà tra classi.
COVARIANZA: si ottiene il risultato previsto dalle classi derivate nell’ambito di una collezione di oggetti di tipo astratto
CONTROVARIANZA: è esattamente il contrario, si ottiene il risultato sfruttando una classe astratta da un oggetto derivato
Covarianza
Per esempio, String eredita da System.Object: ora è possibile assegnare un generico elenco di stringhe
a un Object (con VB 2008 non era possibile).
ATTENZIONE: lo possiamo fare solo attraversoIEnumerable(Of Object)
Vediamo un esempio concreto di codice ...
Covarianza
Controvarianza
In una applicazione Windows Forms, vogliamo definire un metodo comune per la gestione di due
eventi distinti di un pulsante (MouseClick e KeyUp).
Questi eventi sono gestiti da metodi che ricevono rispettivamente oggetti di tipo
MouseEventArgs e KeyEventArgs.
Entrambi ereditano da System.EventArgs.
Controvarianza
In VB 2008 potevamo scrivere:
Controvarianza
In VB 2010 possiamo procedere in modo analogo: prima di tutto definiamo il metodo comune.
Controvarianza
… poi nel gestore dell’evento Load del form aggiungiamo queste due dichiarazioni:
… e abbiamo finito.
Controvarianza
In VB 2010 c’è un altro modo per dichiarare un gestore di evento.
Di cosa parliamo…
• continuazione implicita di linea
• il nuovo tipo BigInteger
• proprietà auto-implementate
• Optional Nullable Parameters
• Collection Initializers
• le novità nella manipolazione degli array
• espressioni lambda multi-linea e Statement Lambda
• covarianza e controvarianza
• WPF e Entity Framework: le novità
WPF: le novità
Nuovi controlli:
- DataGrid- Calendar- DatePicker
WPF: le novità
Nuova classe VisualStateManager: permette di definire l’aspetto di un controllo
visuale in base al suo stato, per esempio lo stato premuto di un
pulsante.
(Microsoft Expression Blend)
WPF: le novità
Supporto ai dispositivi touch screen
WPF: le novità
Miglioramenti nella graficae nelle animazioni
Miglioramenti nel rendering del testo
Estensione e miglioramento del binding
WPF: le novità
Nelle applicazioni WPF per browser (WPF Browser Application):
Interoperabilità HTML – XBAP(XBAP = XAML Browser
Application)
WPF: le novità
WPF sfrutta le funzionalità estese della taskbar di Windows 7
JumpList TaskBarItemInfo
WPF: le novità
Migliore supporto per SilverLight
Supporto multipiattaforma:- WPF 3.5 / 4.0 e successive
- Silverlight 3 / 4 e successive
… e molto altro!
Entity Framework: le novità
Supporto per le entità POCO (Plain Old CLR Object), cioè entità semplici che non ereditano da EntityObject.
Vantaggi:• serializzazione più facile• possibilità di utilizzo di tali entità anche in altri contesti
Entity Framework: le novità
Database Generation Workflow Manager v1.1
Finora potevamo mappare un database attraverso un modello a oggetti.
Ora possiamo creare prima il modello a oggetti e poi generare il database sulla base del modello
(model first design)
Si trova alla pagina:http://visualstudiogallery.msdn.microsoft.com(“Entity Designer Database Generation Power
Pack”)
Entity Framework: le novità
• Supporto per i template T4 (generazione automatica di codice, anche degli script SQL nell’approccio model first)
• Supporto per le stored procedure migliorato
• Supporto per i tipi complessi
• … e molte altre novità
Community DotNetWork.it http://www.dotnetwork.it/
(forum, articoli, blog …)
Forum Microsoft (sezione Visual Basic – in italiano)http://social.microsoft.com/Forums/it-it/
categories
Il blog del Team MSDN Italiahttp://blogs.msdn.com/italy/
RISORSE UTILI
© 2010 Microsoft Corporation. All rights reserved. Microsoft, Visual Studio, the Visual Studio logo, and [list other trademarks referenced] are trademarks of the Microsoft group of companies.
The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond
to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation.
MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED, OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.