Visual Basic .NET - Définition

Source: Wikipédia sous licence CC-BY-SA 3.0.
La liste des auteurs de cet article est disponible ici.

Evolutions : VB9 à VB10

VB10 (aussi appelé VBx) marque un tournant majeur dans l'évolution de VB. Outre le fait qu'il sera intégré dans le Framerwork 4, il devrait surtout combler totalement son "retard" par rapport à C# sur certains points (tout comme C# comblera son retard envers VB), vu que la "co-évolution" des langages C# et VB.NET a été officiellement annoncée. Cela assure non seulement un futur stable à VB.NET, qui ne pourra pas être délaissé par Microsoft mais aussi une garantie que tout ce qui est faisable en C# le sera toujours aussi sous VB.NET (même si c'est d'une autre façon).

Les fonctionnalités prévues pour VBx :

  • Objets dynamiques (permet notamment la Programmation orientée prototype et la communication entre des langages dynamiques (JScript…) et les langages de la plateforme DotNet)
  • Gestion implicite des interfaces (comme C#)
  • Gestion des méthodes anonymes
  • Simplification de l'écriture des tableaux, collections, listes et dictionnaires.

Évolutions : VB8 à VB9 (non-exhaustif)

VB9 a évidemment implémenté toutes les nouvelles fonctionnalités de C#, ainsi que quelques autres :

  • LINQ, XLINQ, DLINQ…
  • Expression Trees (fonctions anonymes)
  • Assouplissement des conversions entre délégués
  • XML Littéral
  • Introduction du ternaire IF (équivalent de bool?truePart:falsePart), optimisé par rapport à IIF()

Quelques exemples de code en VB.NET

Hello World en VB.NET(Mode Console)

      Public Module HelloWorld                 ' Les lignes qui suivent sont toutes facultatives, mais conseillées          ' Elles sont automatiquement transformées en documentation          ''' Point d'entrée du programme          ''' Les arguments en ligne de commande passé au programme          Public Sub Main(Byval Args as String())                     ' Ecrire dans la console              Console.WriteLine("Hello World!")                     ' Attendre que l'utilisateur tape ENTER              ' Renvoie un String (la ligne que l'utilisateur a tapée)              Console.ReadLine()                 End Sub             End Module      

Hello World en VB.NET(Mode Windows Forms)

      Public Class Form1      Public Sub AfficheMessage()      '1ère solution(Marche aussi en VBScript)      MsgBox("Hello World!")      '2ème solution      MessageBox.Show("Hello World!")      End Sub      End Class      

Boucles et conditions

      '      ' A simple IF statement      '      If XCondition = 3 Then         ' XCondition valait 3      ElseIf YCondition <> 4 Then         ' XCondition ne valait pas 3         ' YCondition ne valait pas 4      ElseIf ZCondition Is AnotherObject         ' XCondition ne valait pas 3         ' YCondition valait 4         ' ZCondition et AnotherObject renvoyait vers le même objet      Else          ' Aucune des conditions précédentes n'a été rencontrée      End If                           '      ' An optimised SELECT-CASE (switch in C#)      '      Select Case X         Case 0            ' X = 0         Case 1            ' X = 1         Case 2            ' X = 2         Case Else            ' X <> 1      End Case                           '      ' A SELECT-CASE that's translated as IF/ELSE-IF at compilation      '      Select Case Y         Case Is < 3           ' Y < 3         Case 3           ' Y = 3         Case Else           ' Y > 3 dans ce cas      End Case                           '      ' While      '      While ImTrue         ' ImTrue était vrai         ' Ici on change la valeur de ImTrue         ImTrue= False      End While      ' ImTrue n'est plus vrai                           '      ' Do...Loop      '      ImFalse = False      Do         ' Aucune condition n'a été appliquée si c'est la première fois         ' Sinon, c'est que ImFalse n'est pas faux          ' Dans cet exemple, le code n'est pas relancé une 2e fois      Loop Until ImFalse = False      ' ImFalse est bien faux                           '      ' For et For Each      '      For X as Integer = 0 to 9         ' Ce code sera exécuté 10 fois      Next             For X as Integer = 10 to 1 step -1         ' Ce code sera exécuté 10 fois en sens inverse      Next             For Each Element as ElementType In Array         ' Ce code sera exécuté autant de fois qu'il y a d'éléments de type ElementType dans Array      Next      

Gestion des exceptions

VB.NET possède les instructions try et catch permettant de gérer les exceptions (comportement non attendu des instructions du programme).

Exemples :

      Try          My.Computer.FileSystem.FileReadBytes("C:\Chemin\Fichier.ext")      Catch Ex as FileNotFoundException 'Pour l'erreur Fichier introuvable          MessageBox.Show("Impossible trouver le fichier", "Erreur")      Catch Ex as Exception 'Pour les autres erreurs.          MessageBox.Show("Une erreur inconnue s'est produite. Erreur renvoyée: " & ex.Message, "Erreur")      End Try      'Remarquez que ex récupère les données      'de l'erreur, permettant de les traiter.      'Il y a d'autres options que Message. Consultez la documentation Visual Basic .NET pour en savoir plus.             Try          SomeUnknownCOMObject.DoSomething()      Catch Ex as COMExcpetion When Ex.ErrorCode = 4          ' The object was of the excpected type but he throwned          ' an error with HRESULT 4, which is possible as the           ' documentation of the object says (it's an exemple).          MessageBox.Show("L'objet n'était pas prêt")          ' Throw some new Application-Specific error.          Throw new Exception ("The object was not ready.")      Catch Ex as Exception          ' Display some message          MessageBox.Show("Une erreur inconnue s'est produite", "Erreur")          ' But throw the (same) exception          Throw      Finally          ' Quoiqu'il se passe, on fait cela          ' Même si une erreur est survenue, ce code sera lancé          Try: SomeUnkwnowCOMOBject.DoSomethingAnyWay(): Catch ex as Exception: End Try      End Try      

Exemple d'utilisation de LINQ

      ' Retourne un énumérateur qui renvoie tous les noms des fenêtres enfants qui sont des éditeurs de texte      ' Visual Studio 2008 trouve le type de la variable automatiquement, similaire au "var" du C#      Dim AllText = From CW in MyFormInstance.ChildWidows        Where CW.GetType() is GetType(MyTextEditorWindow)        Select CW.Text             ' Crée un objet XML (un Document XML, pas une chaine de caractère)      ' Visual Studio 2008 trouve le type de la variable automatiquement, similaire au "var" du C#      Dim XMLDoc = _          <% For Each Item in Items %>              ="<%= Item.Name %>" />          <% Next %></root>      ' Sauvegarde dans un fichier le document XML      XMLDoc.Save("FileName.xml")      

Exemple d'un événement simple

      ' Déclaration des objets (fonctions, événements, ...) pour la fenêtre Form1      Public Class Form1                 ' Lorsque l'utilisateur clique sur l'objet Button1          Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click              Me.Close() ' On ferme la fenêtre parente (grâce à Me) donc l'application          End Sub      End Class      

Exemple d'un code appelant une fonction

      Public Class Form1          ' Création de la fonction Quitter avec un Private Sub          Private Sub Quitter()              Me.Close()          End Sub                 ' Lorsque l'utilisateur clique sur l'objet Button1          Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click              Quitter() ' On apelle Private Sub Quitter()          End Sub                 ' Lorsque l'utilisateur clique sur l'objet Button2          Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click              Quitter() ' L'avantage de ce code, c'est qu'on peut appeler Quitter() autant de fois que l'on souhaite          End Sub             End Class      
Page générée en 0.100 seconde(s) - site hébergé chez Contabo
Ce site fait l'objet d'une déclaration à la CNIL sous le numéro de dossier 1037632
A propos - Informations légales
Version anglaise | Version allemande | Version espagnole | Version portugaise