EMZETT.
Login

Kurz: Visual Basic .NET (VB.NET, 2002) ist der Nachfolger von Visual Basic und läuft auf der .NET-Plattform. Die Sprache ist an das englische Alltagsvokabular angelehnt (If … Then, End If, For Each) und deshalb sehr leicht lesbar.

Teil des Kurses Visual Basic .NET

Kapitel 1 von 8 im Kurs Visual Basic .NET. Mit Fortschritt, Quiz und Zertifikat auf der Lernseite.

Was ist Visual Basic .NET?

Visual Basic .NET (VB.NET, 2002) ist der Nachfolger von Visual Basic und läuft auf der .NET-Plattform. Die Sprache ist an das englische Alltagsvokabular angelehnt (If ... Then, End If, For Each) und deshalb sehr leicht lesbar. VB.NET nutzt dieselben Bibliotheken wie C# und F#.

Eingesetzt wird VB.NET vor allem in Windows-Desktopanwendungen (WinForms), in der Büroautomatisierung und in großen, gewachsenen Unternehmenslösungen. Microsoft entwickelt die Sprache nicht mehr aktiv weiter („stabil und unterstützt“), sie bleibt aber vollständig nutzbar – und ist ein guter Einstieg in .NET.

Ausführen

dotnet new console -lang VB -o hallo    # Projekt anlegen
cd hallo && dotnet run                  # bauen und starten
dotnet build                            # nur bauen
dotnet add package Newtonsoft.Json      # NuGet-Paket

Das erste Programm

Module Program
    Sub Main()
        Console.WriteLine("Hallo, Welt!")
        Console.WriteLine("1 + 2 = " & (1 + 2))
        Console.Write("ohne Zeilenumbruch")
        Console.WriteLine()
        Dim name As String = "Mia"
        Console.WriteLine("Hallo, " & name & "!")
        Console.WriteLine($"Interpoliert: {name} hat {name.Length} Buchstaben")
        Console.WriteLine("{0} ist {1} Jahre alt", name, 17)
    End Sub
End Module

Ausgabe:

Hallo, Welt!
1 + 2 = 3
ohne Zeilenumbruch
Hallo, Mia!
Interpoliert: Mia hat 3 Buchstaben
Mia ist 17 Jahre alt

Ein Programm besteht aus einem Module mit einer Sub Main(). Blöcke enden mit End .... Strings verkettet man mit &. VB.NET unterscheidet Groß- und Kleinschreibung nicht.

Variablen und Datentypen

Module Program
    Sub Main()
        Dim alter As Integer = 17
        Dim preis As Double = 9.99
        Dim name As String = "Mia"
        Dim ok As Boolean = True
        Dim z As Char = "z"c
        Dim gross As Long = 9000000000L
        Dim dezimal As Decimal = 1.5D
        Dim datum As Date = #3/15/2024#
        Const MAXIMUM As Integer = 100
 
        Console.WriteLine($"{alter} {preis} {name} {ok} {z}")
        Console.WriteLine($"{gross} {dezimal} {datum:yyyy-MM-dd} {MAXIMUM}")
        Console.WriteLine(alter.GetType().Name & " " & preis.GetType().Name & " " & name.GetType().Name)
 
        Dim x = 5               ' Typinferenz
        Dim y = 2.5
        Console.WriteLine(x.GetType().Name & " " & y.GetType().Name)
        Console.WriteLine(Integer.MaxValue)
        Console.WriteLine(Double.MaxValue > 1.0E+300)
        Dim nichts As String = Nothing
        Console.WriteLine(nichts Is Nothing)
        Console.WriteLine(String.IsNullOrEmpty(nichts))
    End Sub
End Module

Ausgabe:

17 9.99 Mia True z
9000000000 1.5 2024-03-15 100
Int32 Double String
Int32 Double
2147483647
True
True
True

Hinweis

Mit Option Strict On (im Projekt aktivierbar) verbietet der Compiler gefährliche implizite Umwandlungen. Wir nutzen diesen Modus, weil er Fehler früh meldet.

Rechnen

Module Program
    Sub Main()
        Console.WriteLine(7 + 2)
        Console.WriteLine(7 - 2)
        Console.WriteLine(7 * 2)
        Console.WriteLine(7 / 2)       ' / liefert immer Double
        Console.WriteLine(7 \ 2)       ' \ ist die Ganzzahldivision
        Console.WriteLine(7 Mod 3)
        Console.WriteLine(2 ^ 10)      ' ^ ist die Potenz (Double)
        Console.WriteLine(Math.Sqrt(16))
        Console.WriteLine(Math.Abs(-5))
        Console.WriteLine(Math.Max(3, 9))
        Console.WriteLine(Math.Round(2.5))
        Console.WriteLine(Math.Round(3.5))
        Console.WriteLine(Math.Floor(-2.1))
        Console.WriteLine(Math.Ceiling(2.1))
        Console.WriteLine(CInt(3.7))
        Console.WriteLine(CDbl("3.5") * 2)
        Console.WriteLine(CStr(42) & "!")
        Console.WriteLine(Int(3.99))
        Console.WriteLine(Math.PI.ToString("F4"))
        Dim a As Integer = 5
        a += 3
        a *= 2
        Console.WriteLine(a)
        Console.WriteLine(12 And 10)
        Console.WriteLine(12 Or 10)
        Console.WriteLine(12 Xor 10)
        Console.WriteLine(1 << 4)
        Console.WriteLine(256 >> 4)
        Console.WriteLine(0.1 + 0.2)
        Console.WriteLine(0.1D + 0.2D)
    End Sub
End Module

Ausgabe:

9
5
14
3.5
3
1
1024
4
5
9
2
4
-3
3
4
7
42!
3
3.1416
16
8
14
6
16
16
0.30000000000000004
0.3

Merke

  • Ein Programm ist ein Module mit Sub Main(); Blöcke enden mit End ...
  • Dim name As Typ = Wert deklariert Variablen, Const Konstanten
  • / ergibt Double, \ ist die Ganzzahldivision, Mod der Rest, ^ die Potenz
  • & verkettet Strings, $"..." interpoliert

Übungsaufgabe

Berechne die Fläche eines Kreises mit Radius 2,5 und gib sie mit zwei Nachkommastellen aus.

Quiz zur Selbstkontrolle

Weiter im Kurs

Weiter: Kontrollfluss, Prozeduren und Funktionen

Alle Kapitel: Visual Basic .NET im Überblick