Visual Basic .NET - Visual Basic .NET

Visual Basic
Logo VB.NET.svg
Paradigme Multi-paradigme : structuré , impératif , orienté objet , déclaratif , générique , réflexif et événementiel
Conçu par Microsoft
Développeur Microsoft
Première apparition 2001 ; il y a 20 ans ( 2001 )
Version stable
2019 version 16.9 / 2 mars 2021 ; il y a 5 mois ( 2021-03-02 )
Discipline de frappe Statique , à la fois fort et faible , à la fois sûr et dangereux , nominatif
Plate-forme .NET Framework , Mono , .NET
Système d'exploitation Principalement Windows
Également sur Android , BSD , iOS , Linux , macOS , Solaris et Unix
Licence Compilateur Roslyn : Licence Apache 2.0
Extensions de nom de fichier .vb
Site Internet docs .microsoft .com /dotnet /visual-basic /
Les principales mises en œuvre
SDK .NET Framework , compilateur Roslyn et Mono
Dialectes
Microsoft Visual Basic
Influencé par
Visual Basic classique
Influencé
Petit Basique

Visual Basic , appelé à l' origine Visual Basic .NET ( VB.NET ), est un multi-paradigme , orienté objet langage de programmation , mis en œuvre 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é supprimé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. Au 11 mars 2020, Microsoft a annoncé que l'évolution du langage VB.NET était terminée.

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 graphique Windows Forms pour créer des applications de bureau pour Windows . La programmation pour Windows Forms avec Visual Basic consiste à faire glisser et à déposer des contrôles sur un formulaire à l'aide d'un concepteur d'interface graphique et à écrire le code correspondant pour chaque contrôle.

Syntaxe

Visual Basic utilise des instructions pour spécifier des actions. L'instruction la plus courante est une instruction d'expression, consistant en une expression à évaluer, sur une seule ligne. Dans le cadre de cette évaluation, des fonctions ou des sous - programmes peuvent être appelés et des variables peuvent se voir attribuer de nouvelles valeurs. Pour modifier l'exécution séquentielle normale des instructions, Visual Basic fournit plusieurs instructions de flux de contrôle 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 conditionnelles ( If... Then... Else... End Ifet Select Case... Case... End Select) et trois constructions d'exécution itérative (en boucle) ( Do... Loop, For... Toet For Each) . L' instruction For... Toa des sections d'initialisation et de test distinctes, qui doivent toutes deux être présentes. (Voir les exemples ci-dessous.) L' For Eachinstruction parcourt chaque valeur d'une liste.

De plus, en Visual Basic :

  • Il n'y a pas de moyen unifié de 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émarreurs 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 sur plusieurs lignes dans Visual Basic sont activées avec " _" à la fin de chacune de ces lignes. La nécessité du caractère de continuation de soulignement a été largement supprimée dans la version 10 et les versions ultérieures.
  • Le signe égal ("=") est utilisé à la fois dans l'attribution de valeurs aux variables et dans la comparaison.
  • Les parenthèses (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 d' espaces ou de tabulation au début d'une ligne, ou après un autre code sur une ligne, indique que le (reste du) la ligne est un commentaire .

Exemple simple

Ce qui suit est 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()
        ' The classic "Hello, World!" demonstration program
        Console.WriteLine("Hello, World!")
    End Sub

End Module

Il affiche " Hello, World ! " sur 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 n'importe quel type d'objet, comme des constantes ou des variables, des fonctions ou des méthodes, ou des classes, mais ne peut pas être instancié en tant qu'objets comme des classes et ne peut 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 et/ou classes.

Sub Main()

Cette ligne définit un sous-programme appelé "Main". "Main" est le point d'entrée, où le programme commence l'exécution.

Console.WriteLine("Hello, world!")

Cette ligne effectue la tâche réelle d'écriture de la sortie. La console est un objet système, représentant une interface de ligne de commande (également appelée "console") et accordant un accès par programmation aux flux standard du système d'exploitation . Le programme appelle la méthode de console WriteLine, ce 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 envoie Floyd's Triangle sur la console :

Imports System.Console

Module Program

    Sub Main()
        Dim rows As Integer

        ' Input validation.
        Do Until Integer.TryParse(ReadLine("Enter a value for how many rows to be displayed: " & vbcrlf), rows) AndAlso rows >= 1
            WriteLine("Allowed range is 1 and {0}", Integer.MaxValue)
        Loop
      
        ' Output of Floyd's Triangle
        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()
        Next
    End Sub

    ''' <summary>
    ''' Like Console.ReadLine but takes a prompt string.
    ''' </summary>
    Function ReadLine(Optional prompt As String = Nothing) As String
        If prompt IsNot Nothing Then
            Write(prompt)
        End If

        Return Console.ReadLine()
    End Function

End Module

Comparaison avec le classique Visual Basic

La question de savoir si Visual Basic .NET doit être considéré comme une autre version de Visual Basic ou un langage complètement différent est un sujet de débat. De nouveaux ajouts prennent en charge de nouvelles fonctionnalités, telles que la gestion structurée des exceptions et les expressions court-circuitées. En outre, deux modifications importantes du type de données se sont produites avec le passage à VB.NET : par rapport à Visual Basic 6, la longueur du Integer type de données a été doublée de 16 bits à 32 bits, et la longueur du Long type de données a été doublée de 32 bits. à 64 bits. Cela est vrai pour toutes les versions de VB.NET. Un entier 16 bits dans toutes les versions de VB.NET est désormais connu sous le nom de fichier 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 choses qui ont considérablement changé sont la sémantique, de celles d'un langage de programmation basé sur les objets s'exécutant sur un moteur déterministe et compté de références 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 le ramasse-miettes générationnel et un moteur de compilation juste-à-temps ) et une bibliothèque de classes bien plus importante . L'étendue accrue de ce dernier est également un problème auquel les développeurs VB doivent faire face lorsqu'ils abordent le 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 ce qui concerne les performances et la 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. La documentation est disponible pour couvrir les changements dans la syntaxe, les applications de débogage, le déploiement et la terminologie.

Exemples comparatifs

Les exemples simples suivants comparent les syntaxes VB et VB.NET. Ils supposent que le développeur a créé un formulaire, y a placé un bouton et a associé les sous-programmes illustrés 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 :

Private Sub Command1_Click()
    MsgBox "Hello, World"
End Sub

VB.NET (la classe MsgBox ou MessageBox peut être utilisée) :

Private Sub Button1_Click(sender As object, e As EventArgs) Handles Button1.Click
    MsgBox("Hello, World")
End Sub
  • Visual Basic 6 et Visual Basic .NET génèrent automatiquement les instructions Subet End Sublorsque vous double-cliquez sur le bouton correspondant en mode Création. Visual Basic .NET générera également les instructions nécessaires Classet End Class. Le développeur n'a qu'à ajouter la déclaration 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 qu'en Visual Basic 6, il existait différentes conventions pour les fonctions (parenthèses obligatoires) et les sous-parenthèses (aucune parenthèse n'est autorisée, à moins qu'elles ne soient appelées à l'aide du mot-clé Call).
  • Les noms Command1et Button1ne sont pas obligatoires. Toutefois, ce sont des noms par défaut pour un bouton de commande dans Visual Basic 6 et VB.NET respectivement.
  • Dans VB.NET, le Handlesmot-clé est utilisé pour faire du sub Button1_Clickun gestionnaire pour l' Clickévénement de l'objet Button1. Dans Visual Basic 6, les sous-programmes 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 (au lieu de MsgBox) de la même manière que 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 autres caractéristiques 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 utilisant int(C#) ou Integer(VB.NET) au lieu de System.Int32).
  • Dans Visual Basic 2008, l'inclusion de ByVal sender as Object, ByVal e as EventArgsest devenue facultative.

L'exemple suivant montre une différence entre Visual Basic 6 et VB.NET. Les deux exemples ferment la fenêtre active .

Visual Basic 6 :

Sub cmdClose_Click()
    Unload Me
End Sub

VB.NET :

Sub btnClose_Click(sender As Object, e As EventArgs) Handles btnClose.Click
    Close()
End Sub

Le préfixe 'cmd' est remplacé par le préfixe 'btn', conforme à la nouvelle convention mentionnée précédemment.

Visual Basic 6 ne fournissait pas de raccourcis d'opérateur courants. Les éléments suivants sont équivalents :

Visual Basic 6 :

Sub Timer1_Timer()
    'Reduces Form Height by one pixel per tick
    Me.Height = Me.Height - 1
End Sub

VB.NET :

Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
    Me.Height -= 1
End Sub

Comparaison avec C#

C# et Visual Basic sont les premiers langages de Microsoft conçus pour programmer sur le .NET Framework (ajoutant plus tard F# et plus ; d'autres ont également ajouté des langages). Bien que C# et Visual Basic soient syntaxiquement différents, c'est là que les différences s'arrêtent le plus souvent. Microsoft a développé ces deux langages pour faire 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 en 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. En conséquence, à quelques exceptions près, un programme écrit dans l'une ou l'autre langue peut être exécuté via un simple convertisseur de syntaxe pour être traduit 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.

Public Class Form1

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        MsgBox("Hello world!", MsgBoxStyle.Information, "Hello world!") ' Show a message that says "Hello world!".
    End Sub
End Class
Bonjour le monde! la fenêtre

Application de la console

Module Module1

    Sub Main()
        Console.WriteLine("Hello world!") ' Write in the console "Hello world!" and start a new line.
        Console.ReadKey() ' The user must press any key before the application ends.
    End Sub
End Module

Parlant

Application Windows Forms

Nécessite une zone de texte intitulée « TextBox1 » et un bouton appelé Button1.

Public Class Form1
    
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        CreateObject("Sapi.Spvoice").Speak(TextBox1.Text)
    End Sub
End Class

Application de la console

Module Module1
    Private Voice = CreateObject("Sapi.Spvoice")
    Private Text As String

    Sub Main()
        Console.Write("Enter the text to speak: ") ' Say "Enter the text to speak: "
        Text = Console.ReadLine() ' The user must enter the text to speak.
        Voice.Speak(Text) ' Speak the text the user has entered.
    End Sub
End Module

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, repose 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 du .NET Compact Framework et un meilleur assistant de mise à niveau 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 Visual Studio.NET Academic Edition, distribué gratuitement à un certain nombre d'universitaires de chaque pays.

2005 (VB 8.0)

Après Visual Basic .NET 2003, Microsoft a supprimé ".NET" du nom du produit, appelant la prochaine version 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 d'applications rapide et à la différencier davantage de C# ., notamment :

  • Modifier et continuer fonction
  • Évaluation de l'expression au moment de la conception
  • Un pseudo- espace de nom appelé « Mon », qui fournit :
    • Accès facile à certaines zones du .NET Framework qui nécessitent autrement un code important pour accéder, comme utiliser plutôt queMy.Form2.Text = " MainForm "System.WindowsApplication1.Forms.Form2.text = " MainForm "
    • Classes générées dynamiquement (par exemple My.Forms )
  • 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 (passe par-dessus) le code passe-partout écrit par l'IDE Visual Studio .NET et le code de la bibliothèque système pendant le débogage
  • Liaison de source de données, facilitant le développement client/serveur de base de données

Pour combler les écarts entre elle-même et les autres langages .NET, cette version a ajouté :

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 :

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 est passé à une stratégie de co-évolution entre Visual Basic et le 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 " _". En outre, la prise en charge existante des fonctions en ligne a été complétée par la prise en charge des sous-ensembles en ligne ainsi que des versions multilignes des lambdas de sous- et de fonction.

2012 (VB 11.0)

Visual Basic 2012 a été publié avec .NET Framework 4.5 . Les principales fonctionnalités introduites dans cette version incluent :

  • Programmation asynchrone avec les 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é avec .NET Framework 4.5.1 avec Visual Studio 2013. Peut é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 nouveau « ? ». pour effectuer des vérifications nulles en ligne, et une nouvelle fonction 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 Visual Basic officiel est écrit en Visual Basic et est disponible sur GitHub dans le cadre de la plate-forme 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 plate-forme 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 comme la bibliothèque d'interface graphique Windows Forms .

SharpDevelop et MonoDevelop sont des IDE alternatifs open source . L' environnement Gambas est également similaire mais distinct de Visual Basic.

Voir également

Les références

Lectures complémentaires

  1. "Spécification du langage Visual Basic 8.0" . Microsoft Corporation. 15 novembre 2005 . Consulté le 10 décembre 2010 .
  2. " Spécification du langage Visual Basic 9.0 " . Microsoft Corporation. 19 décembre 2007 . Consulté le 28 septembre 2011 .
  3. "Spécification du langage Visual Basic 11.0" . Microsoft Corporation. 7 juin 2013 . Consulté le 22 septembre 2013 .

Liens externes