Fragen und Antworten zum zweiten Webcast "Get the BASICs, VB.NET für Einsteiger und Umsteiger"

Da ich nach dem letzten Webcast direkt an den Flughafen musste und leider keine Zeit hatte Fragen zu beantworten, anbei die gestellten Fragen und Antworten:
 
Q: Kann ich auch "System.Console" importieren?
A: In VB.NET ja, in C# nicht.
 
Q: Ist der Stack ein für das Programm reservierter Speicherbereich?
A: Ja.
 
Q: Wer legt die Stack-Größe fest? VB oder ich als Programmierer selbst?
A: Die CLR legt die Größe des Stacks fest. Meines Wissens nach können Sie die Größe des Stacks nur mit Hilfe des Programms EDITBIN.exe ändern.
 
Q: Wenn ich eine Variable deklariere ist der Wert der Variable ohne Initialisierung 0 oder Nothing (Nothing ist das Äquivalent von NULL in C#)?
A:

Die Antwort auf diese Frage hängt davon ab, ob es sich bei der deklarierten Variablen um einen Wertetyp oder um einen Referenztyp handelt. Wertetypen werden bei der Deklaration mit einem Defaultwert initialisiert (bsp. 0 bei numerischen Typen, False für Boolean, etc.) und können daraufhin direkt verwendet werden. Referenztypen hingegen müssen, im Unterschied zu Wertetypen, bevor sie das erste Mal verwendet werden, mit einem Wert initialisiert werden.

Public Class Kunde

    Public Vorname As String

    Public Nachname As String

End Class

Public Shared Sub main()

    ' Referenztype deklarieren

    Dim myKunde As Kunde

    ' Wertetyp deklarieren

    Dim Ergebnis As Integer

    System.Console.WriteLine(Ergebnis)

    ' in der nächsten Zeile passiert der Fehler da

    ' myKunde vor dem Zugriff initialisiert werden muss

    System.Console.WriteLine(myKunde.Vorname)

End Sub

 
Q: Wie funktioniert das "casten"?
A: Unter „casten“ wird das Umwandeln von einem Typ in einen anderen verstanden. Beispielsweise muss eine Zeichenkettenfolge in einen numerischen Typ umgewandelt werden wenn zu diesem Wert ein weiterer Wert addiert werden soll.

Public Shared Sub main()

    Dim Summand1 As Integer

    Dim Summand2 As Integer

    Dim Summe As Integer

    ' Den ersten Summanden einlesen

    Console.Write("Bitte geben Sie den ersten Summanden ein: ")

    Summand1 = Convert.ToInt32(Console.ReadLine())

    ' Den zweiten Summanden einlesen

    Console.Write("Bitte geben Sie den zweiten Summanden ein: ")

    Summand2 = Convert.ToInt32(Console.ReadLine())

    ' Die Summe aus dem ersten und dem zweiten Summanden bilden

    Summe = Summand1 + Summand2

    ' Das Ergebnis ausgeben

    Console.WriteLine("{0} + {1} = {2}", Summand1, Summand2, Summe)

End Sub
 
Q: Welche Vorschriften bestehen bei der Vergabe von Variablennamen?
A: Auf https://msdn2.microsoft.com/en-us/library/ms229002.aspx findet sich eine gute Abhandlung zu diesem Thema.
 
Q: Kann ich einer Variablen den Wert einer anderen Variablen zuweisen? Beispielsweise dim i as integer = j. Funktioniert das so?
A: Auch hier muss unterschieden werden ob es sich um einen Wertetyp oder um einen Referenztyp handelt. Wertetypen „leben“ auf dem Stack, der Wert einer Wertetyp-Variablen wird also direkt auf dem Stack gespeichert. Referenztypen hingegen werden sowohl auf dem Stack als auch im Heap gespeichert und zwar insofern, als dass auf dem Stack die Speicheradresse des Inhaltes der Variable im Heap gespeichert wird. Die Adresse auf dem Stack „zeigt“ demnach auf den Speicherbereich in dem der Wert der Variable gespeichert wird.

Option Explicit On

Option Strict On

Imports System

Public Class Test

    Public Shared Sub main()

        ' Zwei WerteTyp-Variablen deklarieren

        Dim Ergebnis1 As Integer

        Dim Ergebnis2 As Integer

        Ergebnis1 = 5

        ' Der Wert von Ergebnis1 wird in die Variable Ergebnis2 kopiert.

        ' Beide Variablen enthalten daraufhin den Wert 5.

        Ergebnis2 = Ergebnis1

        ' Zwei Referenztypen-Variablen deklarieren

        Dim Kunde1 As New Kunde

        Dim Kunde2 As Kunde

        ' Die Speicheradresse, die in Kunde1 gespeichert ist,

        ' in der Variablen Kunde2 speichern.

        ' Beide Variablen "zeigen" daraufhin auf den gleichen

        ' Speicherbereich. => Auch Kunde2.Vorname = "Daniel"

        Kunde1.Vorname = "Daniel"

        Kunde2 = Kunde1

    End Sub

    Public Class Kunde

        Public Vorname As String

        Public Nachname As String

    End Class

End Class
 
Q: Wie lang kann der Name einer Variablen sein?
A: Maximal 1023 Zeichen.
 

Viel Erfolg beim Programmieren!