vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
vb@rchiv Offline-Reader - exklusiv auf der vb@rchiv CD Vol.4  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
Re: Schätzung des Zeitbedarfs beim Umstieg von VB6 auf VB.Net 
Autor: Preisser
Datum: 13.01.12 15:21

Hallo,

es gibt natürlich viele unterschiedliche Meinungen darüber, aber ich selbst habe früher auch mit VB6 angefangen, bin dann im Rahmen des Studiums auf Java umgestigen und programiere jetzt fast nur noch in C#/Java (und bin ehrlich gesagt froh, dass ich mich nicht mehr mit der VB-Syntax herumschlagen muss ).

C# ist ja eine Sprache, die speziell fürs .Net-Framework neu entwickelt wurde (sie ist sozusagen die "Referenzsprache" des Frameworks). Bei VB.Net dagegen habe ich irgendwie den Eindruck, dass als Sprachgrundlage die VB6-Syntax + Spracheigenschaften hergenommen wurde und es irgendwie ins .Net-Framework "hineingequetscht" wurde (vermutlich um es VB6-Umsteigern einfacher zu machen, direkt die neue Plattform zu verwenden, ohne sich erst mit einer neuen Sprachsyntax usw. beschäftigen zu müssen). In VB.Net fehlen einige Sachen, die es in C# gibt, und mein Eindruck ist auch, dass es manchmal eine etwas unständliche Syntax hat und VB.Net-Code stellenweise schwerer zu lesen ist als C#-Code.

In VB.Net wurden beispielsweise globale VB6-Funktionen wie Len(), Mid(), Now() usw. übernommen, die man im dortigen Code benutzen kann, obwohl dies eigentlich nicht der OOP-Weg ist, den .Net vorgibt, denn dort gibt es keine globalen Funktionen. Die genannten Funktionen sind eigentlich auch statische (Shared in VB) Methoden der Klassen im Microsoft.VisualBasic-Namespace, die in VB.Net direkt importiert werden - besser wäre es allerdings, die entsprechenden Funktionen zu verwenden, die von den .Net-Objekten bereitgestellt werden (z.B. "Bla".Length statt Len("Bla")).

Es gibt in VB.Net auch Standardinstanzen von Forms, so wie es auch in VB6 war, obwohl dies den OOP-Paradigmen widerspricht (es wird auch als schlechter Stil angesehen, Standardinstanzen zu verwenden). In C# kommt man erst gar nicht in die Versuchung, Standardinstanzen von Formen zu verwenden, da es die dort nicht gibt.

In VB.Net gibt es auch keine Unterscheidung zwischen out- und ref-Parametern in Methoden, da dort Variablen immer sofort den Standartwert zugewiesen bekommen, auch wenn man sie ohne Wert deklariert. Anonyme Methoden, die es in C# seit dem FW 2.0 gibt, lassen sich in VB.Net (soweit ich weiß, bin mir da nicht 100% sicher) erst seit dem FW 4.0 mittels Lambda-Ausdrücken implementieren.

VB.Net hat viele Operatoren, die ausgeschrieben werden müssen und dadurch manchmal die Lesbarkeit verschlechtern. Z.B.
Dim bla As List(Of Integer) = DirectCast(GetMyList(), List(Of Integer))
AddHandler Button1.Click, AddressOf Btn1Click
liest sich (zumindest für mich) etwas schwerer (und ist mehr Tipparbeit ) als
List<int> bla = (List<int>) GetMyList();
Button1.Click += Btn1Click;
.

VB6 stammte auch aus der Pascal-Sprachfamilie, wo beispielsweise bei Arraydeklarationen nicht die Anzahl der Elemente, sondern die Obergrenze angegeben wurde. Wenn man in VB6 ein Array mit 5 Elementen deklariert und es anschließend durchläuft, sieht die typische Schleife so aus:
Dim myArray(0 To 4) as Long ' 5 Elemente mit Indizes 0 - 4
Dim i as Long
For i = LBound(myArray) To UBound(myArray)
    '...
Next
Bei den C-artigen Sprachen dagegen deklariert man ein Array über die Anzahl der Elemente; dies wurde auch im Framework beispielsweise für die .Length-Eigenschaft eines Arrays übernommen, das die Anzahl der Elemente enthält. In C# sieht eine typische Schleife dafür so aus:
int[] myArray = new int[5]; // 5 Elemente
for (int i = 0; i < myArray.Length; i++) {
    // ...
}
VB.Net verwendet jetzt zwar die Klassen des Frameworks, aber z.B. die For-Schleife aus Vb6, wo die andere Grenze inklusive ist. Man müsste in VB.Net die Schleife deshalb so schreiben:
Dim myArray As Integer() = New Integer(4) {} '5 Elemente
For i As Integer = 0 To myArray.Length - 1
    '...
Next
Wichtig ist hier das "- 1", denn .Lenght gibt 5 zurück, obwohl das höchste Element den Index 4 hat. Da man in C-typischen for-Schleifen immer eine Bedindung wie "i < x" verwendet, braucht man dort das "- 1" nicht (aber gut, das ist auch ein bisschen Gescmackssache, wie schwer es wiegt, dass man da immer -1 schreiben muss ).

In VB.Net sollte man auch immer "Option Strict On" verwenden, da man sonst Variablen vor der Verwendung nicht deklarieren muss, was aber nicht als saubere Programmierung angesehen wird. Mit dem angegebenen Statement wird im VB.Net-Code wie in C# erzwungen, dass Variablen vor der Verwendung immer deklariert werden.

Wenn dir allerdings trotzdem die VB-Syntax lieber ist, kannst du natürlich auch VB.Net verwenden.

Beitrag wurde zuletzt am 13.01.12 um 15:42:04 editiert.
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Frage an erfahrene Programmierer1.846Neoras12.01.12 10:49
Schätzung des Zeitbedarfs beim Umstieg von VB6 auf VB.Net1.379Manfred X12.01.12 11:01
Re: Schätzung des Zeitbedarfs beim Umstieg von VB6 auf VB.Ne...1.239Neoras13.01.12 12:07
Re: Schätzung des Zeitbedarfs beim Umstieg von VB6 auf VB.Ne...1.229Manfred X13.01.12 12:29
Re: Schätzung des Zeitbedarfs beim Umstieg von VB6 auf VB.Ne...1.233ModeratorFZelle13.01.12 14:29
Re: Schätzung des Zeitbedarfs beim Umstieg von VB6 auf VB.Ne...1.183Micke13.01.12 14:33
Re: Schätzung des Zeitbedarfs beim Umstieg von VB6 auf VB.Ne...1.246Drapondur13.01.12 15:06
Re: Schätzung des Zeitbedarfs beim Umstieg von VB6 auf VB.Ne...1.220Preisser13.01.12 15:21
Re: Schätzung des Zeitbedarfs beim Umstieg von VB6 auf VB.Ne...1.187Manfred X13.01.12 16:14
Re: Schätzung des Zeitbedarfs beim Umstieg von VB6 auf VB.Ne...1.195Preisser13.01.12 17:13
Re: Schätzung des Zeitbedarfs beim Umstieg von VB6 auf VB.Ne...1.218Maas13.01.12 17:39
Re: Schätzung des Zeitbedarfs beim Umstieg von VB6 auf VB.Ne...1.142ModeratorFZelle13.01.12 20:04
Re: Schätzung des Zeitbedarfs beim Umstieg von VB6 auf VB.Ne...1.129Manfred X13.01.12 18:29
Re: Schätzung des Zeitbedarfs beim Umstieg von VB6 auf VB.Ne...1.303Drapondur13.01.12 19:07
Re: Schätzung des Zeitbedarfs beim Umstieg von VB6 auf VB.Ne...1.149Manfred X13.01.12 19:28
Re: Schätzung des Zeitbedarfs beim Umstieg von VB6 auf VB.Ne...1.197ModeratorDaveS13.01.12 19:44
Re: Schätzung des Zeitbedarfs beim Umstieg von VB6 auf VB.Ne...1.223Manfred X13.01.12 20:00
Re: Schätzung des Zeitbedarfs beim Umstieg von VB6 auf VB.Ne...1.164ModeratorDaveS13.01.12 20:11
Re: Schätzung des Zeitbedarfs beim Umstieg von VB6 auf VB.Ne...1.185keco13.01.12 19:08
Re: Schätzung des Zeitbedarfs beim Umstieg von VB6 auf VB.Ne...1.171Neoras16.01.12 16:25
Re: Frage an erfahrene Programmierer1.219sv0001013.01.12 18:12
Re: Frage an erfahrene Programmierer1.156ModeratorFZelle13.01.12 20:11
Re: Frage an erfahrene Programmierer1.121ModeratorRalfE16.01.12 00:43

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel