visual basic 2010 - le novità del linguaggio community tour… la vendemmia belluno – 2 dicembre...

Post on 02-May-2015

218 Views

Category:

Documents

2 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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 mario@deghetto.it

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.

top related