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!