Visual Basic ( VB ), appelé à l'origine Visual Basic .NET ( VB.NET ), est un langage de programmation multi-paradigme , orienté objet , implémenté sur .NET , Mono et le .NET Framework . Microsoft a lancé VB.NET en 2002 en tant que successeur de son langage Visual Basic d'origine , dont la dernière version était Visual Basic 6.0. Bien que la partie « .NET » du nom ait été abandonnée en 2005, cet article utilise « Visual Basic [.NET] » pour faire référence à tous les langages Visual Basic publiés depuis 2002, afin de les distinguer du Visual Basic classique . Avec C# et F# , c'est l'un des trois principaux langages ciblant l'écosystème .NET. Microsoft a mis à jour sa stratégie linguistique VB le 6 février 2023, déclarant que VB est désormais un langage stable et que Microsoft continuera à le maintenir.
L'environnement de développement intégré (IDE) de Microsoft pour le développement en Visual Basic est Visual Studio . La plupart des éditions de Visual Studio sont commerciales ; les seules exceptions sont Visual Studio Express et Visual Studio Community , qui sont des logiciels gratuits . De plus, le SDK .NET Framework inclut un compilateur de ligne de commande gratuit appelé vbc.exe. Mono inclut également un compilateur VB.NET en ligne de commande.
Visual Basic est souvent utilisé en conjonction avec la bibliothèque d'interface utilisateur graphique Windows Forms pour créer des applications de bureau pour Windows . La programmation pour Windows Forms avec Visual Basic implique de glisser-déposer des contrôles sur un formulaire à l'aide d'un concepteur d'interface utilisateur graphique et d'écrire le code correspondant pour chaque contrôle.
Utiliser pour créer des programmes d'interface utilisateur graphique
La bibliothèque Windows Forms est le plus souvent utilisée pour créer des interfaces graphiques dans Visual Basic. Tous les éléments visuels de la bibliothèque de classes Windows Forms dérivent de la classe Control. Celle-ci fournit les fonctionnalités minimales d'un élément d'interface utilisateur telles que l'emplacement, la taille, la couleur, la police, le texte, ainsi que des événements courants comme le clic et le glisser-déposer. La classe Control prend également en charge l'ancrage pour permettre à un contrôle de réorganiser sa position sous son parent.
Les formulaires sont généralement conçus dans l' IDE Visual Studio . Dans Visual Studio, les formulaires sont créés à l'aide de techniques de glisser-déposer . Un outil est utilisé pour placer des contrôles (par exemple, des zones de texte, des boutons, etc.) sur le formulaire (fenêtre). Les contrôles ont des attributs et des gestionnaires d'événements qui leur sont associés. Les valeurs par défaut sont fournies lors de la création du contrôle, mais peuvent être modifiées par le programmeur. De nombreuses valeurs d'attribut peuvent être modifiées pendant l'exécution en fonction des actions de l'utilisateur ou des modifications de l'environnement, offrant ainsi une application dynamique. Par exemple, du code peut être inséré dans le gestionnaire d'événements de redimensionnement du formulaire pour repositionner un contrôle afin qu'il reste centré sur le formulaire, qu'il s'agrandisse pour remplir le formulaire, etc. En insérant du code dans le gestionnaire d'événements pour une pression de touche dans une zone de texte, le programme peut automatiquement traduire la casse du texte saisi, voire empêcher l'insertion de certains caractères.
Syntaxe
Visual Basic utilise des instructions pour spécifier des actions. L'instruction la plus courante est une instruction d'expression, composée d'une expression à évaluer, sur une seule ligne. Dans le cadre de cette évaluation, des fonctions ou des sous-routines peuvent être appelées et de nouvelles valeurs peuvent être attribuées à des variables . Pour modifier l'exécution séquentielle normale des instructions, Visual Basic fournit plusieurs instructions de contrôle de flux identifiées par des mots clés réservés. La programmation structurée est prise en charge par plusieurs constructions, dont deux constructions d'exécution conditionnelle ( ... ... ... et ... ... ) et quatre constructions d'exécution itérative (boucle) ( ... , ... , et ... ) . L' instruction ... comporte des sections d'initialisation et de test distinctes, qui doivent toutes deux être présentes. (Voir les exemples ci-dessous.) L' instruction parcourt chaque valeur d'une liste. IfThenElseEnd IfSelect CaseCaseEnd SelectDoLoopForToFor EachWhileEnd WhileForToFor Each
De plus, dans Visual Basic :
- Il n'existe pas de méthode unifiée pour définir des blocs d'instructions. Au lieu de cela, certains mots-clés, tels que « If … Then » ou « Sub » sont interprétés comme des débuts de sous-blocs de code et ont des mots-clés de terminaison correspondants tels que « End If » ou « End Sub ».
- Les instructions se terminent soit par deux points (":"), soit par la fin de la ligne . Les instructions multilignes dans Visual Basic sont activées avec « _ » à la fin de chaque ligne de ce type. Le besoin du caractère de continuation de soulignement a été largement supprimé dans la version 10 et les versions ultérieures.
- Le signe égal (« = ») est utilisé à la fois pour attribuer des valeurs aux variables et pour effectuer des comparaisons.
- Les parenthèses sont utilisées avec les tableaux , à la fois pour les déclarer et pour obtenir une valeur à un index donné dans l'un d'eux. Visual Basic utilise des parenthèses pour définir les paramètres des sous-routines ou des fonctions.
- Un guillemet simple (') ou le mot-clé
REM, placé au début d'une ligne ou après un nombre quelconque de caractères d'espace ou de tabulation au début d'une ligne, ou après un autre code sur une ligne, indique que la (reste de la) ligne est un commentaire .
Exemple simple
Voici un programme Visual Basic très simple, une version de l'exemple classique « Hello, World ! » créé en tant qu'application console :
Module Module1 Sub Main () ' Le programme de démonstration classique "Hello, World!" Console . WriteLine ( "Hello, World!" ) End Sub Module de fin
Il affiche « Hello, World! » dans une fenêtre de ligne de commande . Chaque ligne a un objectif spécifique, comme suit :
Module Module1
Il s'agit d'une définition de module. Les modules sont une division de code, qui peut contenir tout type d'objet, comme des constantes ou des variables, des fonctions ou des méthodes, ou des classes, mais ne peuvent pas être instanciés en tant qu'objets comme des classes et ne peuvent pas hériter d'autres modules. Les modules servent de conteneurs de code qui peuvent être référencés à partir d'autres parties d'un programme.
Il est courant qu'un module et le fichier de code qui le contient aient le même nom. Cependant, cela n'est pas obligatoire, car un seul fichier de code peut contenir plusieurs modules ou classes.
Sous- principal ()
Cette ligne définit une sous-routine appelée « Main ». « Main » est le point d'entrée, où le programme commence son exécution.
Console . WriteLine ( "Bonjour tout le monde !" )
Cette ligne effectue la tâche réelle d'écriture de la sortie. Console est un objet système, représentant une interface de ligne de commande (également appelée « console ») et accordant un accès programmatique aux flux standard du système d'exploitation . Le programme appelle la méthode Console WriteLine, qui provoque l'affichage de la chaîne qui lui est transmise sur la console.
Au lieu de Console.WriteLine, on pourrait utiliser MsgBox, qui imprime le message dans une boîte de dialogue au lieu d'une fenêtre de ligne de commande.
Exemple complexe
Ce morceau de code génère le triangle de Floyd sur la console :
Importe System.Console Programme du module Sous- main () Diminue les lignes en tant qu'entier ' Validation d'entrée. Do Until Integer . TryParse ( ReadLine ( "Entrez une valeur pour le nombre de lignes à afficher : " & vbcrlf ), rows ) AndAlso rows >= 1 WriteLine ( "La plage autorisée est 1 et {0}" , Integer . MaxValue ) Loop ' Sortie du triangle de Floyd Dim current As Integer = 1 Dim row As Integer Dim column As Integer For row = 1 To rows For column = 1 To row Write ( "{0,-2} " , current ) current += 1 Next WriteLine () Suivant Fin Sub ''' <summary> ''' Comme Console.ReadLine mais prend une chaîne d'invite. ''' </summary> Fonction ReadLine ( invite facultative comme chaîne = Rien ) Comme chaîne si l'invite n'est pas Rien alors Écriture ( invite ) Fin si Console de retour . ReadLine () Fin de la fonction Module de fin
Comparaison avec le Visual Basic classique
La question de savoir si Visual Basic .NET doit être considéré comme une simple version de Visual Basic ou comme un langage complètement différent est sujette à débat. De nouveaux ajouts ont été apportés pour prendre en charge de nouvelles fonctionnalités, telles que la gestion structurée des exceptions et les expressions court-circuitées. De plus, deux modifications importantes du type de données ont eu lieu avec le passage à VB.NET : par rapport à Visual Basic 6, le Integer
type de données a doublé de longueur, passant de 16 bits à 32 bits, et le Long
type de données a doublé de longueur, passant de 32 bits à 64 bits. Cela est vrai pour toutes les versions de VB.NET. Un entier de 16 bits dans toutes les versions de VB.NET est désormais appelé Short. De même, l' éditeur de formulaires Windows est très similaire en termes de style et de fonction à l'éditeur de formulaires Visual Basic.
Les éléments qui ont considérablement changé sont la sémantique : d'un langage de programmation basé sur les objets exécuté sur un moteur déterministe à références comptées basé sur COM à un langage entièrement orienté objet soutenu par le .NET Framework , qui consiste en une combinaison du Common Language Runtime (une machine virtuelle utilisant la récupération de place générationnelle et un moteur de compilation juste-à-temps ) et d'une bibliothèque de classes beaucoup plus vaste . L'étendue accrue de cette dernière est également un problème auquel les développeurs VB doivent faire face lorsqu'ils arrivent au langage, bien que cela soit quelque peu résolu par la fonctionnalité My de Visual Studio 2005.
Les changements ont modifié de nombreuses hypothèses sous-jacentes sur la « bonne » chose à faire en matière de performances et de maintenabilité. Certaines fonctions et bibliothèques n'existent plus ; d'autres sont disponibles, mais pas aussi efficaces que les alternatives .NET « natives ». Même si elles compilent, la plupart des applications Visual Basic 6 converties nécessiteront un certain niveau de refactorisation pour tirer pleinement parti du nouveau langage. Une documentation est disponible pour couvrir les changements de syntaxe, le débogage des applications, le déploiement et la terminologie.
Exemples comparatifs
Les exemples simples suivants comparent la syntaxe VB et VB.NET. Ils supposent que le développeur a créé un formulaire, placé un bouton dessus et a associé les sous-routines présentées dans chaque exemple au gestionnaire d'événements de clic du bouton mentionné. Chaque exemple crée une boîte de message « Hello, World » après avoir cliqué sur le bouton du formulaire.
Visual Basic 6 :
Commande privée Sub1_Click () MsgBox "Bonjour, monde" Fin de l'abonnement
VB.NET (la classe MsgBox ou MessageBox peut être utilisée) :
Bouton privé Sub1_Click ( sender As object , e As EventArgs ) gère Button1 . Cliquez sur MsgBox ( "Hello, World" ) Fin de l'abonnement
- Visual Basic 6 et Visual Basic .NET génèrent automatiquement les instructions
SubetEnd Sublorsque le bouton correspondant est double-cliqué en mode Création. Visual Basic .NET génère également les instructionsClasset nécessairesEnd Class. Le développeur n'a qu'à ajouter l'instruction pour afficher la boîte de message « Hello, World ». - Tous les appels de procédure doivent être effectués avec des parenthèses dans VB.NET, alors que dans Visual Basic 6, il y avait des conventions différentes pour les fonctions (parenthèses obligatoires) et les sous-fonctions (aucune parenthèse autorisée, sauf si elles sont appelées à l'aide du mot clé
Call). - Les noms
Command1etButton1ne sont pas obligatoires. Cependant, il s'agit des noms par défaut d'un bouton de commande dans Visual Basic 6 et VB.NET respectivement. - Dans VB.NET, le
Handlesmot clé est utilisé pour faire du sous-élémentButton1_Clickun gestionnaire pour l'Clickévénement de l'objetButton1. Dans Visual Basic 6, les sous-éléments du gestionnaire d'événements doivent avoir un nom spécifique composé du nom de l'objet (Command1), d'un trait de soulignement (_) et du nom de l'événement (Click, d'oùCommand1_Click). - Il existe une fonction appelée
MessageBox.Showdans l'Microsoft.VisualBasicespace de noms qui peut être utilisée (à la place deMsgBox) de manière similaire à la fonction correspondante dans Visual Basic 6. Il existe une controverse sur la fonction à utiliser comme meilleure pratique (non seulement limitée à l'affichage des boîtes de message mais aussi concernant d'autres fonctionnalités de l'Microsoft.VisualBasicespace de noms). Certains programmeurs préfèrent faire les choses « à la manière de .NET », car les classes Framework ont plus de fonctionnalités et sont moins spécifiques au langage. D'autres soutiennent que l'utilisation de fonctionnalités spécifiques au langage rend le code plus lisible (par exemple, en utilisantint(C#) ouInteger(VB.NET) au lieu deSystem.Int32). - Dans Visual Basic 2008, l’inclusion de , est devenue facultative.
ByValsenderasObjectByValeasEventArgs
L'exemple suivant illustre une différence entre Visual Basic 6 et VB.NET. Les deux exemples ferment la fenêtre active .
Visual Basic 6 :
Sub cmdClose_Click () Déchargez -moi Fin Sub
VB.NET :
Sub btnClose_Click ( sender As Object , e As EventArgs ) Gère btnClose . Cliquez sur Fermer () Fin du sous-programme
Le préfixe « cmd » est remplacé par le préfixe « btn », conformément à la nouvelle convention mentionnée précédemment.
Visual Basic 6 ne propose pas de raccourcis clavier courants. Les raccourcis clavier suivants sont équivalents :
Visual Basic 6 :
Sub Timer1_Timer () 'Réduit la hauteur du formulaire d'un pixel par tick Me . Height = Me . Height - 1 Fin du sous-programme
VB.NET :
Sub Timer1_Tick ( sender As Object , e As EventArgs ) Gère Timer1 . Tick Me . Height -= 1 Fin Sub
Comparaison avec C#
C# et Visual Basic sont les premiers langages de Microsoft conçus pour programmer sur le .NET Framework (plus tard, F# et d'autres ont été ajoutés ; d'autres ont également ajouté des langages). Bien que C# et Visual Basic soient syntaxiquement différents, c'est là que s'arrêtent la plupart des différences. Microsoft a développé ces deux langages pour qu'ils fassent partie de la même plate-forme de développement .NET Framework. Ils sont tous deux développés, gérés et pris en charge par la même équipe de développement de langage chez Microsoft. Ils compilent dans le même langage intermédiaire (IL), qui s'exécute sur les mêmes bibliothèques d'exécution .NET Framework. Bien qu'il existe quelques différences dans les constructions de programmation, leurs différences sont principalement syntaxiques et, en supposant que l'on évite les bibliothèques de « compatibilité » Visual Basic fournies par Microsoft pour faciliter la conversion à partir de Visual Basic 6, presque toutes les fonctionnalités de VB ont une fonctionnalité équivalente dans C# et vice versa. Enfin, les deux langages font référence aux mêmes classes de base du .NET Framework pour étendre leurs fonctionnalités. Par conséquent, à quelques exceptions près, un programme écrit dans l'un ou l'autre langage peut être exécuté via un simple convertisseur de syntaxe pour se traduire dans l'autre. Il existe de nombreux produits open source et disponibles dans le commerce pour cette tâche.
Exemples
Bonjour le monde!
Application Windows Forms
Nécessite un bouton appelé Button1.
Formulaire de classe publique 1 Private Sub Button1_Click ( sender As Object , e As EventArgs ) Handles Button1 . Click MsgBox ( "Hello world!" , MsgBoxStyle . Information , "Hello world!" ) ' Affiche un message indiquant "Hello world!". End Sub End Class

Application de console
Module Module1 Sub Main () Console . WriteLine ( "Hello world!" ) ' Écrivez dans la console "Hello world!" et démarrez une nouvelle ligne. Console . ReadKey () ' L'utilisateur doit appuyer sur n'importe quelle touche avant la fin de l'application. End Sub End Module
Parlant
Application Windows Forms
Nécessite une zone de texte intitulée « TextBox1 » et un bouton appelé Button1.
Classe publique Form1 Sous-classe privée Button1_Click ( sender As Object , e As EventArgs ) Gère Button1 . Click CreateObject ( "Sapi.Spvoice" ). Speak ( TextBox1 . Text ) Fin du sous- classe Fin de la classe
Application de console
Module Module1 Voix privée = CreateObject ( "Sapi.Spvoice" ) Texte privé sous forme de chaîne Sous- principal () Console . Write ( "Entrez le texte à prononcer : " ) ' Dites "Entrez le texte à prononcer : " Texte = Console . ReadLine () ' L'utilisateur doit saisir le texte à parler. Voix . Parler ( Texte ) ' Prononcez le texte saisi par l'utilisateur. Fin de sous-titre Module de fin
Historique des versions
Succédant à la version classique de Visual Basic 6.0, la première version de Visual Basic .NET a fait ses débuts en 2002. En 2020 , dix versions de Visual Basic .NET sont publiées.
2002 (VB 7.0)
La première version, Visual Basic .NET, s'appuie sur .NET Framework 1.0 . La fonctionnalité la plus importante est le code managé , qui contraste avec le Visual Basic classique.
2003 (VB 7.1)
Visual Basic .NET 2003 a été publié avec .NET Framework 1.1 . Les nouvelles fonctionnalités comprenaient la prise en charge de .NET Compact Framework et un meilleur assistant de mise à niveau de VB. Des améliorations ont également été apportées aux performances et à la fiabilité de .NET IDE (en particulier le compilateur d'arrière-plan) et de l'exécution. De plus, Visual Basic .NET 2003 était disponible dans l'édition académique de Visual Studio.NET, distribuée gratuitement à un certain nombre d'universitaires
2005 (VB 8.0)
Après Visual Basic .NET 2003, Microsoft a supprimé « .NET » du nom du produit, appelant la version suivante Visual Basic 2005.
Pour cette version, Microsoft a ajouté de nombreuses fonctionnalités destinées à renforcer l'orientation de Visual Basic .NET en tant que plate-forme de développement rapide d'applications et à le différencier davantage de C# , notamment :
- Fonctionnalité Modifier et continuer
- Évaluation de l'expression au moment de la conception
- Un pseudo- espace de noms appelé « Mon », qui fournit :
- Accès facile à certaines zones du .NET Framework qui nécessitent par ailleurs un code important pour y accéder, comme l'utilisation plutôt que
My.Form2.Text=" MainForm "System.WindowsApplication1.Forms.Form2.text=" MainForm " - Classes générées dynamiquement (par exemple My.Forms )
- Accès facile à certaines zones du .NET Framework qui nécessitent par ailleurs un code important pour y accéder, comme l'utilisation plutôt que
- Convertisseur VB vers VB.NET amélioré
- Un mot-clé « using », simplifiant l'utilisation des objets qui nécessitent le modèle Dispose pour libérer des ressources
- Fonctionnalité Just My Code , qui masque (enjambe) le code standard écrit par l'IDE Visual Studio .NET et le code de la bibliothèque système pendant le débogage
- Liaison de sources de données, simplification du développement client/serveur de bases de données
Pour combler les écarts entre elle-même et les autres langages .NET, cette version a ajouté :
- Génériques
- Classes partielles , une méthode permettant de définir certaines parties d'une classe dans un fichier, puis d'ajouter d'autres définitions ultérieurement ; particulièrement utile pour intégrer le code utilisateur au code généré automatiquement
- Surcharge d'opérateur et types nullables
- Prise en charge des types de données entiers non signés couramment utilisés dans d'autres langages
Visual Basic 2005 a introduit l' IsNotopérateur qui rend 'If X IsNot Y'équivalent à 'If Not X Is Y'. Il a gagné en notoriété lorsqu'il a été découvert qu'il faisait l'objet d'une demande de brevet Microsoft.
2008 (VB 9.0)
Visual Basic 9.0 a été publié avec .NET Framework 3.5 le 19 novembre 2007.
Pour cette version, Microsoft a ajouté de nombreuses fonctionnalités, notamment :
- Un véritable opérateur conditionnel , « If(condition as Boolean, truepart, falsepart) », pour remplacer la fonction « IIf ».
- Types anonymes
- Prise en charge de LINQ
- Expressions lambda
- Littéraux XML
- Inférence de type
- Méthodes d'extension
2010 (VB 10.0)
En avril 2010, Microsoft a publié Visual Basic 2010. Microsoft avait prévu d'utiliser Dynamic Language Runtime (DLR) pour cette version mais a opté pour une stratégie de co-évolution entre Visual Basic et son langage frère C# pour rapprocher les deux langages. La capacité innée de Visual Basic à interagir dynamiquement avec les objets CLR et COM a été améliorée pour fonctionner avec des langages dynamiques construits sur le DLR tels que IronPython et IronRuby . Le compilateur Visual Basic a été amélioré pour déduire la continuation de ligne dans un ensemble de contextes communs, supprimant dans de nombreux cas le besoin des caractères de continuation de ligne « _ ». De plus, la prise en charge existante des fonctions en ligne a été complétée par la prise en charge des sous-programmes en ligne ainsi que des versions multilignes des lambdas Sub et Function.
2012 (VB 11.0)
Visual Basic 2012 a été publié en même temps que .NET Framework 4.5 . Les principales fonctionnalités introduites dans cette version incluent :
- Programmation asynchrone avec instructions « async » et « wait »
- Itérateurs
- Hiérarchie des appels
- Informations sur l'appelant
- Mot-clé « Global » dans les instructions « namespace »
2013 (VB 12.0)
Visual Basic 2013 a été publié en même temps que .NET Framework 4.5.1 avec Visual Studio 2013. Vous pouvez également créer des applications .NET Framework 4.5.2 en installant Developer Pack.
2015 (VB 14.0)
Visual Basic 2015 (nom de code VB « 14.0 ») a été publié avec Visual Studio 2015. Les fonctionnalités du langage incluent un nouvel opérateur « ?. » pour effectuer des vérifications null en ligne, et une nouvelle fonctionnalité d'interpolation de chaîne est incluse pour formater les chaînes en ligne.
2017 (VB 15.x)
Visual Basic 2017 (nom de code VB « 15.0 ») a été publié avec Visual Studio 2017. Étend la prise en charge des nouvelles fonctionnalités du langage Visual Basic 15 avec les révisions 2017, 15.3, 15.5, 15.8. Introduit de nouvelles refactorisations qui permettent d'organiser le code source en une seule action.
2019 (VB 16.0)
Visual Basic 2019 (nom de code VB « 16.0 ») a été publié avec Visual Studio 2019. Il s'agit de la première version de Visual Basic axée sur .NET Core.
Développement multiplateforme et open source
Le compilateur officiel Visual Basic est écrit en Visual Basic et est disponible sur GitHub dans le cadre de la plateforme de compilateur .NET . La création d'outils open source pour le développement Visual Basic a été lente par rapport à C# , bien que la plateforme de développement Mono fournisse une implémentation de bibliothèques spécifiques à Visual Basic et un compilateur compatible Visual Basic 2005 écrit en Visual Basic, ainsi que des bibliothèques de framework standard telles que la bibliothèque d'interface graphique Windows Forms .
MonoDevelop était un IDE alternatif open source . L' environnement Gambas est également similaire mais distinct de Visual Basic, tout comme l'éditeur Visual FB pour FreeBasic .