Visual Basic 2008 – What’s new André Obelink, MCSD – MVP MarYor | software & consultancy www.vbcentral.nl | www.obelink.com | www.maryor.nl.

Slides:



Advertisements
Verwante presentaties
Help, ik moet naar Office 2007!?. Wat horen wij bij klanten Training “New UI will cause too big of a loss in productivity” Training “New UI will cause.
Advertisements

KINN 2010 •OOP •O Object •O Georiënteerd •P Programmeren.
Zelf objecten maken in VBA Ynte Jan Kuindersma, BIRD Automation Nationale Officedag 2009 EDE, 14 Oktober 2009.
HM-ES-th1 Les 9 Hardware/Software Codesign with SystemC.
Hoe SQL injection werkt
SAP ABAP A short introduction. SAP ABAP • Selectie: – IF …… ENDIF. – IF …. ELSE … ENDIF. – IF …. ELSEIF …. ELSEIF …. ELSE …. ENDIF. – IF condition_1.
Internet College 2 Architecturen. Architectuur van netwerktoepassingen •Peer to peer –Windows werkgroep •File- en printer sharing •Internet connection.
Windows app-ontwikkeling Jan Hummelman i&i Conferentie 2012.
JQuery en ASP.NET Bart De Meyer.
Programmeren in Java met BlueJ
Gegevensstructuren: list boxen en lijsten
MagentaPurpleTeal PinkOrangeBlue LimeBrown RedGreen Introductie C# /.NET
Voor VBA programmeurs Maurice de Beijer.  Maurice de Beijer.  The Problem Solver.  Visual Basic MVP.  Blog: theproblemsolver/default.aspxhttp://msmvps.com/blogs/
VBA en VBS Een introductie.
Voor VBA programmeurs Maurice de Beijer.  Maurice de Beijer.  The Problem Solver.  Visual Basic MVP.  Blog: theproblemsolver/default.aspxhttp://msmvps.com/blogs/
Speaking OData to SharePoint 2010 in a RESTful manner Michaël Hompus | Principal Developer | Winvision.
OOS Object geOrienteerd Software-ontwerp - 4 Codeerperikelen Singleton Specificeren Scheiding GUI en Domein Facade.
AAHA (voor intern gebruik)
Omgevingen zijn dan geïmplementeerd als Symbol Tables. Symbol Table mapt een symbool met een Binding Meerdere noties van binding –Meerdere manieren te.
HM-ES-th1 Les 1 Hardware/Software Codesign with SystemC.
SQL injections en meer... PERU. web application vulnerabilities Cross Site Scripting (21.5%) SQL Injection (14%) PHP includes (9.5%) Buffer overflows.
Computervaardigheden en Programmatie Universiteit AntwerpenObjecten 4.1 Computervaardigheden en Programmatie 1rste BAC Toegepaste Biologische Wetenschappen.
Informatica Universiteit AntwerpenScripting 5.1 Informatica 1rste BAC Biologie Hoofdstuk 5 Scripting.
Programming for Linguists An Introduction to Python 29/11/2012.
Server side scripting 1 Webtechnologie Lennart Herlaar.
1 Toegepaste Informatica Keuzevak C++ 3°jaar. 2 Studiefiche  Software  Boek (hfst 3-5)  Presentatie (website)
Algoritmiek Arrays: wat zijn dat en wat kun je ermee? Loops: hoe hou je ze in bedwang? Hoorcollege 6 - Ma. 9 okt L.M. Bosveld-de Smet.
WinFX Overview Martin Tirion Senior Consultant Microsoft Services.
Client Management met ConfigMgr Jannes Alink – Management.
Databases I (H.3) Het Entity-Relationship Model Wiebren de Jonge Vrije Universiteit, Amsterdam versie 2003.
Herhaling: For, While en Do
Consoleprogramma’s Hoofdstuk 19. Visual Basic.NET voor studenten2 In dit hoofdstuk … Hoe consoletoepassingen maken In- en uitvoer bij consoleprogramma’s.
Hoorcollege 7 Collections, arrays. Programma ‘Snowflakes’ Sneeuwvlok object.
Visual Basic.
Hibernate Object relational mapping
Algoritmiek Strings & Stringmanipulaties; Controle Structuren; Floating-point notation. Hoorcollege 4 - Ma. 25 sept L.M. Bosveld-de Smet.
DB&SQL8- 1 VBA Visual Basics for Applications: eigen Office versie vanaf Office2000 gelijk voor alle applicaties Programmeren onder meer nodig voor Het.
JAVA1 H 22. COLLECTIONS FRAMEWORK. 1. INLEIDING. Collections framework Is een verzameling van data structuren, interfaces en algoritmen Meest voorkomende.
Hoofdstuk 5 – Object Based Programmeren
Hoofdstuk 2 - Inleiding tot Visual Studio .NET IDE
Visual Basic.Net - Overzicht
Vervolg C Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1 Onderwerpen voor vandaag GUI  command line redirection.
Microsoft’s Enterprise Project Management 2007 “The Next Generation” Johan Apperloo Olaf van KImmenaede.
Hoofdstuk 2 Java. Soorten Java-programma’s nJava Applet programma “leeft” op een WWW-pagina nJava Application programma heeft een eigen window nJavascript.
Organizing Organization is the deployment of resources to achieve strategic goals. It is reflected in Division of labor into specific departments & jobs.
XForms TU Delft Library Digitale Productontwikkeling Egbert Gramsbergen.
Microsoft Operations Manager & Scripting
Web Applicaties Bouwen met Visual Studio .NET
ACE Case Oracle 11g Release 2 voor ontwikkelaars Rob van Wijk 17 november 2009.
1 december KC Development Tools Hands-on Oracle HTML DB v2.0.
Visual Basic 2005/2008 OOP in praktijk André Obelink - MCSD, MVP Web: Web: -
Visual Basic 2005 nieuwe taalelementen André Obelink, MCSD, MVP Auteur, VBcentral.nl Auteur, VBcentral.nl Microsoft MVP Visual Basic Microsoft MVP Visual.
Visual Basic 2010 – What’s new André Obelink
Afdrukken met Visual Basic 2008
KINN 2010 OOP O Object O Georiënteerd P Programmeren.
Visual Basic.NET voor studenten De VB- ontwikkelomgeving Hoofdstuk 2.
Drupal Omega Theme + LESS Drupal User Group 13/12/2012 Maarten De Block 13/12/2012www.entityone.be1.
Hoofdstuk 5 Interactie. Controls Form Label Button Label TextBox.
EML en IMS Learning Design
C++ C++ als een verbetering van C Abstracte datatypen met classes Constructoren en destructoren Subklassen binding van functies 1.
Computertechniek Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1 C programmeren voor niet-C programmeurs les 2 definitie.
Programmeerstijl Hoofdstuk 21. Visual Basic.NET voor studenten2 Inleiding Belang van een goede programmeerstijl:  Programma’s worden door meerdere mensen.
1 OMI Modelleren van content. 2 Vocabulary Content “gevangen” in begrippenapparaat: Vocabulary: lijst met termen nauwelijks semantiek Ontology:
Les 7 Multiple Document Interface Programmeren met Visual Basic Karl Moens.
Arrays Hoofdstuk 14 Hoofdstuk 14.
Tweedimensionale arrays
Bewerkingen met Strings
Polymorfie Hoofdstuk 24. Visual Basic.NET voor studenten2 Inleiding Polymorfie zorgt ervoor dat een gegeven object verschillende “vormen” kan aannemen.
Hogeschool van Amsterdam - Interactieve Media – Internet Development – Jochem Meuwese - -
Processing Structured Hypermedia
Transcript van de presentatie:

Visual Basic 2008 – What’s new André Obelink, MCSD – MVP MarYor | software & consultancy | |

Me.About.ToString() MarYor | software & consultancy MarYor | software & consultancy Auteur van artikelen en boeken.. Auteur van artikelen en boeken.. – Geschreven voor Microsoft.NET Magazine, PC Active, MSDN Magazine Europe, SDN Magazine, VB Magazine – Boek: Visual Basic 2005 – de Basis (9/2006) – Boek: Visual Basic Kookboek (3/2008) – Boek: Visual Basic 2008 – de Basis (verwacht 5/2008) De andere persoon achter VBcentral.nl De andere persoon achter VBcentral.nl VP Speakers Bureau INETA Europe VP Speakers Bureau INETA Europe Microsoft MVP voor Visual Basic sinds 2006 Microsoft MVP voor Visual Basic sinds 2006

Wat niet aan de orde komt… Diverse uitbreidingen binnen VS2008 IDE Diverse uitbreidingen binnen VS2008 IDE – Quality tools – Uitbreidingen ten behoeve van WPF applicaties – Uitbreidingen ten behoeve van webapplicaties – Reporting: nieuwe Report Projects – MSBuild: multi-targetting, multiple processors – …….

Wat wel aan de orde komt… Performance VB2008 ten opzichte van VB2005 Performance VB2008 ten opzichte van VB2005 Intellisense Everywhere Intellisense Everywhere Language Integrated Query (LINQ) Language Integrated Query (LINQ) – LINQ to Objects, LINQ to SQL en LINQ to XML – En de taaluitbreidingen die LINQ mogelijk maakt… Type Infering, Object Initializers, Anonymous types, Extension methods, Lambda Expressions, … XML Data Type XML Data Type

Performance VB2008 ↔VB2005 Verdere performance verbeteringen - Debugger, projecten laden, … Bron: Lisa Feigenbaum (VB team). Testmachine: Windows XP, Dual Core Pentium, 3.0 Ghz, 1 GB RAM

Intellisense Intellisense ‘everywhere’ Intellisense ‘everywhere’ Performance sterk verbeterd Performance sterk verbeterd Intellisence voor JavaScript, CSS en XML literals Intellisence voor JavaScript, CSS en XML literals Transparant met CTRL toets Transparant met CTRL toets – onderliggende code zichtbaar VB: filtert het resultaat, waardoor lijst compacter VB: filtert het resultaat, waardoor lijst compacter VB: LINQ en Intellisense + tooltip hints VB: LINQ en Intellisense + tooltip hints

Visual Basic 9.0 – Design Goals Vereenvoudig het werken met data Vereenvoudig het werken met data – Integratie van query- en transformatie opdrachten – Universele manier van ‘quering’ van objecten, relationele data en XML data Vereenvoudig het werken met XML Vereenvoudig het werken met XML – Breng structuur in documenten zonder schema – Maak creëren van XML documenten makkelijker – Vereenvoudig toegang tot XML elementen

Databronnen die LINQ ondersteunen Language INtegrated Query (LINQ) LINQ To Objects Objecten LINQ To XML XML LINQ To Datasets LINQ To SQL LINQ To Entities Relationele data LINQ binnen ADO.NET Overige… VB C#.NET Language-Integrated Query

Demo Language Integrated Query

De ‘magie’ achter LINQ Dim query = From proc In Process.GetProcesses _ Where proc.Threads.Count > 10 _ Where proc.Threads.Count > 10 _ Select proc.ProcessName, proc.Threads.Count Select proc.ProcessName, proc.Threads.Count Dim query = From proc In Process.GetProcesses _ Where proc.Threads.Count > 10 _ Where proc.Threads.Count > 10 _ Select proc.ProcessName, proc.Threads.Count Select proc.ProcessName, proc.Threads.Count Dim query = Process.GetProcesses(). _ Where(Function(proc As Process) proc.Threads.Count > 10). _ Where(Function(proc As Process) proc.Threads.Count > 10). _ Select(Function(proc As Process) _ Select(Function(proc As Process) _ New With{.ProcessName = proc.ProcessName, _ New With{.ProcessName = proc.ProcessName, _.Count = proc.Threads.Count}).Count = proc.Threads.Count}) Dim query = Process.GetProcesses(). _ Where(Function(proc As Process) proc.Threads.Count > 10). _ Where(Function(proc As Process) proc.Threads.Count > 10). _ Select(Function(proc As Process) _ Select(Function(proc As Process) _ New With{.ProcessName = proc.ProcessName, _ New With{.ProcessName = proc.ProcessName, _.Count = proc.Threads.Count}).Count = proc.Threads.Count}) Function _Filter1(proc As Process) As Boolean Return proc.Threads.Count > 10 Return proc.Threads.Count > 10 Exit Function Function _Filter1(proc As Process) As Boolean Return proc.Threads.Count > 10 Return proc.Threads.Count > 10 Exit Function Function _Projection1(proc As Process) As Function _Projection1(proc As Process) As Dim projection As New Dim projection As New projection.ProcessName = proc.ProcessName projection.ProcessName = proc.ProcessName projection.Count = proc.Threads.Count projection.Count = proc.Threads.Count Return projection Return projection End Function Function _Projection1(proc As Process) As Function _Projection1(proc As Process) As Dim projection As New Dim projection As New projection.ProcessName = proc.ProcessName projection.ProcessName = proc.ProcessName projection.Count = proc.Threads.Count projection.Count = proc.Threads.Count Return projection Return projection End Function

Query Expressions

Relationele data vandaag de dag Dim connection As New SqlConnection(…) connection.Open() Dim cmd As New SqlCommand(“SELECT c.Name, c.Phone “ & _ “FROM Customers As c” & _ “FROM Customers As c” & _ “WHERE c.City “WHERE c.City = “London” Dim dr As DataReader = connection.Execute(cmd) While dr.Read() Dim name as String = dr.GetString(0) Dim name as String = dr.GetString(0) Dim telefoon as String = dr.GetString(1) Dim telefoon as String = dr.GetString(1) Dim gebdatum As Date = dr.GetDateTime(2) Dim gebdatum As Date = dr.GetDateTime(2) End While connection.Close() Dim connection As New SqlConnection(…) connection.Open() Dim cmd As New SqlCommand(“SELECT c.Name, c.Phone “ & _ “FROM Customers As c” & _ “FROM Customers As c” & _ “WHERE c.City “WHERE c.City = “London” Dim dr As DataReader = connection.Execute(cmd) While dr.Read() Dim name as String = dr.GetString(0) Dim name as String = dr.GetString(0) Dim telefoon as String = dr.GetString(1) Dim telefoon as String = dr.GetString(1) Dim gebdatum As Date = dr.GetDateTime(2) Dim gebdatum As Date = dr.GetDateTime(2) End While connection.Close() Queries tussen aanhalingstekens

Relationele Data met LINQ Public Class Customer … End Class Public Class Northwind Inherits DataContext Inherits DataContext Public Property Customers As Table(Of Customer) Public Property Customers As Table(Of Customer) … End Class Public Class Customer … End Class Public Class Northwind Inherits DataContext Inherits DataContext Public Property Customers As Table(Of Customer) Public Property Customers As Table(Of Customer) … End Class Dim db As New Northwind(…) Dim contact = From cust in db.Customers _ Where cust.City = “London” Where cust.City = “London” Select cust.Name, cust.Phone Select cust.Name, cust.Phone For Each custInfo in Contacts DoeIets(custInfo.Name, custInfo.Phone) DoeIets(custInfo.Name, custInfo.Phone)Next Dim db As New Northwind(…) Dim contact = From cust in db.Customers _ Where cust.City = “London” Where cust.City = “London” Select cust.Name, cust.Phone Select cust.Name, cust.Phone For Each custInfo in Contacts DoeIets(custInfo.Name, custInfo.Phone) DoeIets(custInfo.Name, custInfo.Phone)Next Klassen beschrijven data Een Table is een soort collection ‘strongly typed’ connection Geïntegreerde query syntax ‘strongly typed’ resultaten

Demo Linq voor relationele data – Linq to SQL

From komt voor Select From komt voor Select Even wennen aan de ‘SQL’ syntax Dim klanten = From klant in db.Customers _ Select klant.CustomerID, klant.CompanyName Select klant.CustomerID, klant.CompanyName Dim klanten = From klant in db.Customers _ Select klant.CustomerID, klant.CompanyName Select klant.CustomerID, klant.CompanyName Nodig voor IntelliSense Dim klanten2 = From klant in klanten _ Where klant.Name.StartsWith(“O”) _ Where klant.Name.StartsWith(“O”) _ Select klant.Name, klant.City Select klant.Name, klant.City Dim klanten2 = From klant in klanten _ Where klant.Name.StartsWith(“O”) _ Where klant.Name.StartsWith(“O”) _ Select klant.Name, klant.City Select klant.Name, klant.City Dim klanten = From klant in db.Customers _ Select klant.Name, klant.City, klant.ZIP _ Select klant.Name, klant.City, klant.ZIP _ Order By ZIP, _ Select Name, City Order By ZIP, _ Select Name, City Dim klanten = From klant in db.Customers _ Select klant.Name, klant.City, klant.ZIP _ Select klant.Name, klant.City, klant.ZIP _ Order By ZIP, _ Select Name, City Order By ZIP, _ Select Name, City Veel vrijheid bij bouwen query Veel vrijheid bij bouwen query Bouw opdrachten ‘regel voor regel’ … … en over meerdere statements Eventueel Select achterwege laten

Expliciete aggregatie Expliciete aggregatie Bevat ook operators voor hiërarchische data Bevat ook operators voor hiërarchische data Even wennen aan de ‘SQL’ syntax Dim klanten = From sod in db.SalesOrderDetails _ Group By sod.SalesOrderHeader.CustomerID _ Group By sod.SalesOrderHeader.CustomerID _ Into OrderTotaal = Sum(sod.OrderQty * sod.UnitPrice) _ Into OrderTotaal = Sum(sod.OrderQty * sod.UnitPrice) _ Select CustomerID, OrderTotaal Select CustomerID, OrderTotaal Dim klanten = From sod in db.SalesOrderDetails _ Group By sod.SalesOrderHeader.CustomerID _ Group By sod.SalesOrderHeader.CustomerID _ Into OrderTotaal = Sum(sod.OrderQty * sod.UnitPrice) _ Into OrderTotaal = Sum(sod.OrderQty * sod.UnitPrice) _ Select CustomerID, OrderTotaal Select CustomerID, OrderTotaal Zogenaamde ‘Grouping Key’ Expliciete aggregatie Imports System.Diagnostics Dim procs = From proc In Process.GetProcesses() _ Aggregate thread In proc.Threads _ Aggregate thread In proc.Threads _ Into ThreadPriorityGemiddelde = Average(thread.CurrentPriority) _ Into ThreadPriorityGemiddelde = Average(thread.CurrentPriority) _ Select LijstProcessen = proc.ProcessName, ThreadPriorityGemiddelde Select LijstProcessen = proc.ProcessName, ThreadPriorityGemiddelde Imports System.Diagnostics Dim procs = From proc In Process.GetProcesses() _ Aggregate thread In proc.Threads _ Aggregate thread In proc.Threads _ Into ThreadPriorityGemiddelde = Average(thread.CurrentPriority) _ Into ThreadPriorityGemiddelde = Average(thread.CurrentPriority) _ Select LijstProcessen = proc.ProcessName, ThreadPriorityGemiddelde Select LijstProcessen = proc.ProcessName, ThreadPriorityGemiddelde Groep bestaat al

Demo Linq to XML – Maak XML

Maak XML - vandaag de dag Dim doc As New XmlDocument Dim wns As XmlElement = doc.CreateElement("Werknemers") For Each werknemer As Werknemer In werknemers If werknemer.Achternaam = "Jansen" Then If werknemer.Achternaam = "Jansen" Then Dim wn As XmlElement = doc.CreateElement("Werknemer") Dim wn As XmlElement = doc.CreateElement("Werknemer") Dim BSN As XmlAttribute = doc.CreateAttribute("BSN") Dim BSN As XmlAttribute = doc.CreateAttribute("BSN") BSN.Value = werknemer.BSN : wn.Attributes.Append(BSN) BSN.Value = werknemer.BSN : wn.Attributes.Append(BSN) Dim an As XmlElement = doc.CreateElement("Achternaam") Dim an As XmlElement = doc.CreateElement("Achternaam") an.InnerText = werknemer.Achternaam : wn.AppendChild(an) an.InnerText = werknemer.Achternaam : wn.AppendChild(an) Dim voornaam As XmlElement = doc.CreateElement("Voornaam") Dim voornaam As XmlElement = doc.CreateElement("Voornaam") voornaam.InnerText = werknemer.Voornaam : wn.AppendChild(voornaam) voornaam.InnerText = werknemer.Voornaam : wn.AppendChild(voornaam) wns.AppendChild(wn) wns.AppendChild(wn) End If End IfNextdoc.AppendChild(wns) Dim doc As New XmlDocument Dim wns As XmlElement = doc.CreateElement("Werknemers") For Each werknemer As Werknemer In werknemers If werknemer.Achternaam = "Jansen" Then If werknemer.Achternaam = "Jansen" Then Dim wn As XmlElement = doc.CreateElement("Werknemer") Dim wn As XmlElement = doc.CreateElement("Werknemer") Dim BSN As XmlAttribute = doc.CreateAttribute("BSN") Dim BSN As XmlAttribute = doc.CreateAttribute("BSN") BSN.Value = werknemer.BSN : wn.Attributes.Append(BSN) BSN.Value = werknemer.BSN : wn.Attributes.Append(BSN) Dim an As XmlElement = doc.CreateElement("Achternaam") Dim an As XmlElement = doc.CreateElement("Achternaam") an.InnerText = werknemer.Achternaam : wn.AppendChild(an) an.InnerText = werknemer.Achternaam : wn.AppendChild(an) Dim voornaam As XmlElement = doc.CreateElement("Voornaam") Dim voornaam As XmlElement = doc.CreateElement("Voornaam") voornaam.InnerText = werknemer.Voornaam : wn.AppendChild(voornaam) voornaam.InnerText = werknemer.Voornaam : wn.AppendChild(voornaam) wns.AppendChild(wn) wns.AppendChild(wn) End If End IfNextdoc.AppendChild(wns) <Werknemers> Jansen Jansen Piet Piet …</Werknemers><Werknemers> Jansen Jansen Piet Piet …</Werknemers> Imperatief model ‘Document centric’ Geen geïntegreerde queries Geheugen intensief

LINQ to XML – Maak XML Dim xml As New XElement("Werknemers", _ From w In werknemers _ From w In werknemers _ Where w.Achternaam = "Jansen" _ Where w.Achternaam = "Jansen" _ Select New XElement("Werknemer", _ Select New XElement("Werknemer", _ New XAttribute("BSN", w.BSN), _ New XAttribute("BSN", w.BSN), _ New XElement("Achternaam", w.Achternaam), _ New XElement("Achternaam", w.Achternaam), _ New XElement("Voornaam", w.Voornaam))) New XElement("Voornaam", w.Voornaam))) Dim xml As New XElement("Werknemers", _ From w In werknemers _ From w In werknemers _ Where w.Achternaam = "Jansen" _ Where w.Achternaam = "Jansen" _ Select New XElement("Werknemer", _ Select New XElement("Werknemer", _ New XAttribute("BSN", w.BSN), _ New XAttribute("BSN", w.BSN), _ New XElement("Achternaam", w.Achternaam), _ New XElement("Achternaam", w.Achternaam), _ New XElement("Voornaam", w.Voornaam))) New XElement("Voornaam", w.Voornaam))) Declaratief model Geïntegreerde queries ‘Element centric’ Kleiner en sneller

Demo Linq to XML – Geïntegreerde XML binnen VB

Geïntegreerde XML binnen VB Dim werknemersxml = _ <%= From w in werknemers _ <%= From w in werknemers _ Where w.Voornaam = “Jan” _ Where w.Voornaam = “Jan” _ Select Select %> %> Dim werknemersxml = _ <%= From w in werknemers _ <%= From w in werknemers _ Where w.Voornaam = “Jan” _ Where w.Voornaam = “Jan” _ Select Select %> %> Infers Xml.Linq XElement Geen conceptuele barrière ‘Expression holes’ voor dynamische data / variabelen.

Query expressions Query expressions XML literals XML literals XML element access XML element access Nullable types Nullable types Object initializers Object initializers Local type inference Local type inference Lambda expressions Lambda expressions Visual Basic Features Extension methods Extension methods Expression trees Expression trees Anonymous types Anonymous types Ternary operator Ternary operator Coalesce operator Coalesce operator Relaxed delegates Relaxed delegates Partial methods Partial methods

Tot de tijd op is… Taaluitbreidingen die LINQ mogelijk maken, maar ook erg handig zijn voor eigen gebruik!

Uitbreiden van bestaande datatypen Uitbreiden van bestaande datatypen – Plaats methode in module en in zelfde namespace – Markeer methode met – Markeer methode met Extension methods _ _ Public Function Omdraaien(ByVal tekst As String) As String Dim karakterArray() As Char = tekst.ToCharArray() Dim karakterArray() As Char = tekst.ToCharArray() Array.Reverse(karakterArray) Array.Reverse(karakterArray) Return New String(karakterArray) Return New String(karakterArray) End Function _ _ Public Function Omdraaien(ByVal tekst As String) As String Dim karakterArray() As Char = tekst.ToCharArray() Dim karakterArray() As Char = tekst.ToCharArray() Array.Reverse(karakterArray) Array.Reverse(karakterArray) Return New String(karakterArray) Return New String(karakterArray) End Function Dim strNaam As String = “André” Debug.Print strNaam.Omdraaien() ResultaatérdnA Dim strNaam As String = “André” Debug.Print strNaam.Omdraaien() ResultaatérdnA

Specificieer eigenschappen bij instantiëren Specificieer eigenschappen bij instantiëren – Is anders dan een overloaded Sub New() – Gebruik With {.eigenschapnaam = ….} Object Initializers Public Class Werknemer Public Property BSN() As String Public Property BSN() As String …. …. End Property End Property …. …. End Class Public Class Werknemer Public Property BSN() As String Public Property BSN() As String …. …. End Property End Property …. …. End Class Dim werknemer As New Werknemer() With {.BSN = “123”} of … Dim bestand As New FileInfo(“c:\test.txt”) _ With {.IsReadOnly = True, _ With {.IsReadOnly = True, _.CreationTime = Now}.CreationTime = Now} Dim werknemer As New Werknemer() With {.BSN = “123”} of … Dim bestand As New FileInfo(“c:\test.txt”) _ With {.IsReadOnly = True, _ With {.IsReadOnly = True, _.CreationTime = Now}.CreationTime = Now}

Definieer + instantieer objecten ‘on the fly’ Definieer + instantieer objecten ‘on the fly’ – … dit is waar LINQ op gebaseerd is... Anonymous Types Dim boek = New With {.Titel = "Visual Basic Kookboek", _.Auteur = "André Obelink", _.Auteur = "André Obelink", _.ISBN = }.ISBN = } boek.Titel &= " - Luxe Editie" Dim boek = New With {.Titel = "Visual Basic Kookboek", _.Auteur = "André Obelink", _.Auteur = "André Obelink", _.ISBN = }.ISBN = } boek.Titel &= " - Luxe Editie"

Functiedefinitie binnen een andere functie Functiedefinitie binnen een andere functie – lambda expressies zijn ook als argument te gebruiken – soort instantie van een delegate Lambda Expressions Dim woordenLijst As New List(Of String) woordenLijst.Add("een") : woordenLijst.Add("twee") woordenLijst.Add("vier") : woordenLijst.Add("zes") Dim DrieLetterWoorden = Function(s As String) s.Length = 3 Dim lijst = woordenLijst.FindAll(DrieLetterWoorden) For Each getal In lijst MessageBox.Show(getal) MessageBox.Show(getal)Next Dim woordenLijst As New List(Of String) woordenLijst.Add("een") : woordenLijst.Add("twee") woordenLijst.Add("vier") : woordenLijst.Add("zes") Dim DrieLetterWoorden = Function(s As String) s.Length = 3 Dim lijst = woordenLijst.FindAll(DrieLetterWoorden) For Each getal In lijst MessageBox.Show(getal) MessageBox.Show(getal)Next Dim Verdubbel = Function(Getal As Integer) Getal * 2 MessageBox.Show(Verdubbel(5).ToString)MessageBox.Show(Verdubbel(13).ToString) MessageBox.Show(Verdubbel(5).ToString)MessageBox.Show(Verdubbel(13).ToString)

Refactor! Refactor! – Gratis Visual Studio Add-In van DevExpress – Geschikt voor Visual Basic 2003 – 2008 – Veel nieuwe features (>15), enkele alleen VB Visual Basic Power Packs 3.0  VB6 upgrade Visual Basic Power Packs 3.0  VB6 upgrade – PrintForm, Printer Compatibility Library – Line en Shape Controls – Interop Forms Toolkit 2.0  MDI + User controls – DataRepeater Control Visual Basic 2008 – Extra’s

Vragen? web: |