La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

VB.NET Overview Corrado Cavalli Microsoft.NET MVP

Presentazioni simili


Presentazione sul tema: "VB.NET Overview Corrado Cavalli Microsoft.NET MVP"— Transcript della presentazione:

1 VB.NET Overview Corrado Cavalli Microsoft.NET MVP

2 Importante! VB.NET è VB7 Non è E un linguaggio nuovo, maturo, OOP E un linguaggio nuovo, maturo, OOP Sintassi molto (!) simile a VB6 Sintassi molto (!) simile a VB6 Da usare come nuovo linguaggio Da usare come nuovo linguaggio

3 .NET Framework Tutti i linguaggi.NET (C++ escluso) richiedono la presenza del.NET Framework Tutti i linguaggi.NET (C++ escluso) richiedono la presenza del.NET Framework Strato software che si interpone tra il S.O e lapplicazione Strato software che si interpone tra il S.O e lapplicazione Codice MSIL MSIL VB.NET,C#,C++,J#....NET Framework CLR (Garbage Collector,Eccezioni,Multithreading) BCL (Tipi Base) Sistema Operativo (Windows 98/NT/2000/XP/2003/CE e Altri) Circa 8000 classi...

4 Codice IL e JIT Compiler VB.NET Compilatore vbc.exe Codice IL e Metadati JIT Compiler Codice x86 RUN!

5 . NET Framework Common Language Runtime BCL - Libreria di classi ADO.NET : dati e XML ASP.NET : Web Forms e servizi Windows Forms Il tutto... Totalmente Free!

6 Dettagli Redist circa 20 MB (già installato su WS2003) Redist circa 20 MB (già installato su WS2003) Non gira su Windows 95 Non gira su Windows 95 Per sviluppare serve Win2000 o superiore Per sviluppare serve Win2000 o superiore Non serve per applicazioni ASP.NET (lato client) Non serve per applicazioni ASP.NET (lato client) Esiste per Pocket PC, SmartPhones, Embedded Esiste per Pocket PC, SmartPhones, Embedded

7 . NET Framework (Applicazioni) Console Applications Console Applications Windows Forms Windows Forms Windows Services Windows Services Components Components Web Forms (Siti Web) Web Forms (Siti Web) XML Web Services XML Web Services New!

8 Il linguaggio Tutti i files hanno la stessa estensione (.vb) e possono contenere più Classi [Class]/ Moduli [Module]. Tutti i files hanno la stessa estensione (.vb) e possono contenere più Classi [Class]/ Moduli [Module]. EntryPoint (Sub Main) di un programma può essere in un modulo o in una classe EntryPoint (Sub Main) di un programma può essere in un modulo o in una classe

9 Namespaces Sono dei raggruppamenti Logici Sono dei raggruppamenti Logici I moduli e le classi vivono nei Namespaces I moduli e le classi vivono nei Namespaces VB Imposta un root namespace VB Imposta un root namespace VB.NET definisce degli imports globali VB.NET definisce degli imports globali Imports Namespace=Alias Permette di evitare di scrivere il percorso completo a un namespace Imports Namespace=Alias Permette di evitare di scrivere il percorso completo a un namespace NameSpace ABC... NameSpace DEF... End NameSpace End NameSpace

10 Variabili Global Variables (usare Shared) Global Variables (usare Shared) Usare Option Explicit e Option Strict Usare Option Explicit e Option Strict Dichiarazioni multiple sulla stessa riga Dichiarazioni multiple sulla stessa riga Block scope (cicli For,Do...Loop) Block scope (cicli For,Do...Loop) Dim a,b,c as String Crea 3 variabili stringa Dim a,b,c as String a,b=Variant c=String VB6 Dim i as Integer=1 VB6 Option Strict On= Error!

11 Data Types Variant non esiste più Variant non esiste più Tutto deriva da System.Object Tutto deriva da System.Object

12 Data Types Byte Byte Char (2 bytes) [Ac] Char (2 bytes) [Ac] Boolean (4 bytes) Boolean (4 bytes) Short (2 bytes) {ex Integer} Short (2 bytes) {ex Integer} Integer (4 bytes) {ex Long} Integer (4 bytes) {ex Long} Long (8 bytes) Long (8 bytes) Currency -> Decimal (16 bytes) Currency -> Decimal (16 bytes) Single Single Double Double Date Date Sono Alias dei tipi definiti nel.NET framework (Int16, Int32...) Sono Alias dei tipi definiti nel.NET framework (Int16, Int32...) New!

13 Data Types String String Le stringhe a lunghezza fissa non esistono in.NET Le stringhe a lunghezza fissa non esistono in.NET Dim s as New String( c,20) Crea una stringa lunga 20 caratteri Dim s as String *20 VB6

14 Initializers E possibile dichiarare e inizializzare una variabile sulla stessa riga E possibile dichiarare e inizializzare una variabile sulla stessa riga Dim X as Integer=1 Dim y as Integer=myFunction Dim conn as new SQLConnection(...) Dim x as new MyOwnClass()... Dim x as MyOwnClass x=new MyOwnClass Sono equivalenti

15 Assignments Le proprietà di Default non esistono più Le proprietà di Default non esistono più Set non si usa più Set non si usa più X+=1,X-=1,X*=n,X\=n,Y^=n, s+=xyz X+=1,X-=1,X*=n,X\=n,Y^=n, s+=xyz s=s & ciao, s=s+ciao s=s & ciao, s=s+ciao Bit shifting! Dim i as Integer=8 i=i>>1 (4) VS 2003 Only Label1.Caption=ok Label1=ok VB6 Label1.Text=ok VB.NET s=s & 1 (ok) s=s+1 (error) VB.NET

16 Value Types Ereditano da System.ValueType Ereditano da System.ValueType Enum,Structures,Integer... Tipi base Enum,Structures,Integer... Tipi base Sono memorizzate sullo stack Sono memorizzate sullo stack Contengono il valore della variabile Contengono il valore della variabile Dim i as integer=1 1

17 Reference Types Sono memorizzate nella Heap Sono memorizzate nella Heap Contengono un riferimento alla variabile Contengono un riferimento alla variabile Stringhe, Objects Stringhe, Objects Sono controllati dal Garbage Collector Sono controllati dal Garbage Collector Dim s as String=pippo &H1230Ciao &H1235pippo...pluto &H1235 Heap

18 Boxing-Unboxing E la conversione di un value type in un reference type e viceversa E la conversione di un value type in un reference type e viceversa E un operazione dispendiosa in termini di prestazioni e memoria E un operazione dispendiosa in termini di prestazioni e memoria Accade quando si passa un Value Type ad una variabile object Accade quando si passa un Value Type ad una variabile object Usare CType() o DirectCast() per evitare Boxing e UnBoxing Usare CType() o DirectCast() per evitare Boxing e UnBoxing CType tenta la conversione del tipo CType tenta la conversione del tipo DirectCast è più veloce (solo reference types) DirectCast è più veloce (solo reference types)

19 Enum Simili a VB6 Simili a VB6 E possibile definire il tipo usato dallEnum E possibile definire il tipo usato dallEnum E possibile decorare un enumerato con E possibile decorare un enumerato con Demo

20 Array Sono 0 (zero!) based Sono 0 (zero!) based Il valore usato nella Dim è lupper bound! Il valore usato nella Dim è lupper bound! Dim a(3,2) as Integer [Matrici] Dim a(3,2) as Integer [Matrici] Array Initializers Dim x() as Int32={1,2,3} Array Initializers Dim x() as Int32={1,2,3} Array.Clone Array.Clone Array.Copy(...) Array.Copy(...) Demo Dim b(3) as Integer VB.NET: 0,1,2,3 C#: 0,1,2

21 Strutture Sono Value Types Sono Value Types Si definiscono usando Si definiscono usando Possono essere viste come classi leggere Possono essere viste come classi leggere Structure Prova Public X as Integer Public Y as Long End Structure Demo Type Prova Public X as Integer Public Y as Long End Type VB6VB.NET

22 Procedure I Parametri sono ByVal (ByRef in VB6) I Parametri sono ByVal (ByRef in VB6) Si può usare Return per ritornare un valore Si può usare Return per ritornare un valore Le routines richiedono sempre le parentesi Le routines richiedono sempre le parentesi Public Function Test (ByVal X as Integer) as Integer Return X+1 End Structure Test(3) <-Parentesi

23 Short circuit e Loop AndAlso e OrElse sono short circuited AndAlso e OrElse sono short circuited IIF No (!) IIF No (!) For i as Integer=0 to Next For Each t as TextBox in Me.Controls... Next VS 2003 Only While... End While While... Wend

24 Gestione degli Errori E possibile usare On Error... E possibile usare On Error... Non Fatelo!.NET supporta la gestione strutturata delle eccezioni (SEH).NET supporta la gestione strutturata delle eccezioni (SEH) Un eccezione è un anomalia che può capitare durante la vita dellapplicazione Un eccezione è un anomalia che può capitare durante la vita dellapplicazione Lanomalia viene segnalata attraverso un oggetto Exception (o ereditato da esso) Lanomalia viene segnalata attraverso un oggetto Exception (o ereditato da esso) Exception.Message Exception.Source Exception.StackTrace Exception.Message Exception.Source Exception.StackTrace Come faccio a intercettare le eccezioni?

25 Try-Catch-Finally Throw Try... Catch ex as Exception (When)... Exit Try Throw... Finally.... End Try Per lanciare un eccezione usare Throw (Exception) Per lanciare un eccezione usare Throw (Exception) E possibile passare leccezione originale usando InnerException E possibile passare leccezione originale usando InnerException

26 Classi in.NET Tutti i files hanno estensione.vb Tutti i files hanno estensione.vb In un unico file ci possono essere più classi In un unico file ci possono essere più classi Definite con I membri di una classe possono essere dimensionati ovunque (non solo nella Declaration Section) Definite con I membri di una classe possono essere dimensionati ovunque (non solo nella Declaration Section) E possibile esporre costanti pubbliche da una classe E possibile esporre costanti pubbliche da una classe I Forms sono delle classi! I Forms sono delle classi! Dim f as New Form1 f.Show() Class Test End Class

27 Overloading La possibilità di definire più funzioni con lo stesso nome e diverso numero di parametri La possibilità di definire più funzioni con lo stesso nome e diverso numero di parametri Non vale per parametri di ritorno Non vale per parametri di ritorno Da preferire rispetto a parametri opzionali (attenzione!) per compatibilità con C# Da preferire rispetto a parametri opzionali (attenzione!) per compatibilità con C# IsMissing non è più supportata IsMissing non è più supportata I parametri opzionali devono avere un default I parametri opzionali devono avere un default Public Sub Test (ByVal X as Integer) End Sub Public Sub Test (ByVal X as Integer,ByVal Z as Integer) End Sub

28 Properties ReadOnly e WriteOnly ReadOnly e WriteOnly Al momento non possono avere scope diversi Al momento non possono avere scope diversi Public Class Test Property Name as XXX Get... End Get Set (Value as XXX) End Set End Property End Class

29 Costruttori Metodo invocato quando si istanzia una classe (new) Metodo invocato quando si istanzia una classe (new) Equivalente di Class_Initialize Equivalente di Class_Initialize Possibilità di passare parametri e usare Overloads Possibilità di passare parametri e usare Overloads Public Class MyOwnClass Public Sub New (ByVal X as Integer)... End Sub End Class

30 Vita degli oggetti In.NET non esiste Class_Terminate In.NET non esiste Class_Terminate Non viene usato il reference counting ma il Garbage Collector Non viene usato il reference counting ma il Garbage Collector Distruzione non deterministica: Non sappiamo quando un oggetto verrà scaricato dalla memoria Distruzione non deterministica: Non sappiamo quando un oggetto verrà scaricato dalla memoria Come risolviamo il problema?

31 Finalize (~) Viene invocato dal GC quando loggetto viene scaricato dalla memoria Viene invocato dal GC quando loggetto viene scaricato dalla memoria Non risolve il problema della determinazione Non risolve il problema della determinazione Public Overrides Sub Finalize... End Class

32 Eventi Event,RaiseEvent e WithEvents Event,RaiseEvent e WithEvents Con Handles si possono gestire eventi multipli (No Control Arrays in.NET) Con Handles si possono gestire eventi multipli (No Control Arrays in.NET) AddHandler / RemoveHandler AddHandler / RemoveHandler Private Sub Button1_Click(…) Handles Button1.Click, Button2.Click … End Sub AddHandler Button1.Click, AddressOf Button1_Click RemoveHandler Button1.Click, AddressOf Button1_Click

33 Shared Members Sono membri condivisi da tutte le istanze di una classe (Static in C#) Sono membri condivisi da tutte le istanze di una classe (Static in C#) Si accede usando NomeClasse.XXX Si accede usando NomeClasse.XXX I membri statici possono accedere ai soli fields statici I membri statici possono accedere ai soli fields statici GlobalMultiuse in VB6 GlobalMultiuse in VB6 Public Class MyOwnClass Private Shared ID as Integer Public Shared Function ID as Integer Return ID End Function End Class Sostituiscono i moduli.BAS

34 Ereditarietà Permette di definire che una classe eredita Interfaccia e codice da un altra (Is a) Permette di definire che una classe eredita Interfaccia e codice da un altra (Is a) La classe base può essere in un altro linguaggio.NET (C#,J#,C++) La classe base può essere in un altro linguaggio.NET (C#,J#,C++) La classe ereditante eredita Public,Friend,... La classe ereditante eredita Public,Friend,... La classe eredita tutti gli eventi della classe base La classe eredita tutti gli eventi della classe base MyBase permette di accedere alla classe da cui si sta ereditando MyBase permette di accedere alla classe da cui si sta ereditando Public Class MyNewClass Inherits MyBaseClass End Class

35 Override della classe base La classe ereditante può ridefinire (Overrides) i metodi della classe base (se Overridable) La classe ereditante può ridefinire (Overrides) i metodi della classe base (se Overridable) I metodi overrides sono a loro volta overridable I metodi overrides sono a loro volta overridable NotOverridable impedisce loverride NotOverridable impedisce loverride

36 Classi Astratte NotInheritable indica che una classe non è ereditabile Esempio: Classe con soli membri statici NotInheritable indica che una classe non è ereditabile Esempio: Classe con soli membri statici MustInherit definisce una classe astratta che non può essere istanziata MustInherit definisce una classe astratta che non può essere istanziata MustOverride definisce un membro che deve essere ereditato MustOverride definisce un membro che deve essere ereditato

37 Scope Qualifier Private,Public,Friend... Private,Public,Friend... Protected: Visibile allinterno della stessa classe e alle classi che ereditano da essa Protected: Visibile allinterno della stessa classe e alle classi che ereditano da essa Protected Friend: Nella stessa Assembly Protected Friend: Nella stessa Assembly

38 Interfacce Si definiscono usando Interface Si definiscono usando Interface Possono contenere Eventi Possono contenere Eventi Limplementazione è slegata dal nome Limplementazione è slegata dal nome Le classi ereditate ereditano anche limplementazione di interfaccia Le classi ereditate ereditano anche limplementazione di interfaccia

39 Interface IPerson Sub DoSomething() Property Name() As String End Interface Public Class Person Implements IPerson Public Sub DoSomething() Implements IPerson.DoSomething … End Sub Public Property Name() As String Implements IPerson.Name Get … End Get Set(ByVal Value As String) … End Set End Property End Class Definizione Implementazione Può essere diverso

40 Communities news.microsoft.com microsoft.public.it.dotnet.vb microsoft.public.it.dotnet.* news.microsoft.com microsoft.public.it.dotnet.vb microsoft.public.it.dotnet.* Comunità degli sviluppatori Comunità degli sviluppatorihttp://www.microsoft.com/italy/msdn/community/default.asp

41 Webcasts 5 Febbraio, 14:30-16:00 5 Febbraio, 14:30-16:00 VB.NET: Sviluppo di applicazioni desktop


Scaricare ppt "VB.NET Overview Corrado Cavalli Microsoft.NET MVP"

Presentazioni simili


Annunci Google