VB vs. C#

  • VB.NET

Es gibt 28 Antworten in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.

    Hallo Ihr lieben,

    ich sehe immer häufiger, das Leute lieber C# benutzen, und frage mich langsam immer häufiger: weshalb? Welche Vorteile bietet C# denn gegenüber VB ? Wenn ich das mal google heißt es meistens, nur das C# die größere Community hat und das neue .NET Features dort zuerst eingeführt werden, das ist, finde ich allerdings zumindest, kein ausreichendes Argument welches die kompliziertere Schreibweise von C# gegenüber VB rechtfertigen würde, gibt es noch weitere Vorteile? Oder ist es letzten Endes doch einfach eher Geschmackssache?

    LG und Danke
    If Energy = Low Then
    Drink(aHugeCoffee)
    Else
    Drink(aHugeCoffeeToo)
    End If
    Letzten endes ist es stand heute nicht mehr nur einfach Geschmacksache sondern das man sich einfach beugen muss.

    Asp.net Core, Blazor und viele neue implementierungen (z.b. keine VB.Net Templates mehr für normale Wpf oder WinForms Projekte in .net 5) zwingen einem fast dazu. Leider.

    Ich muss aber sagen das ich in der letzten Zeit sowohl eine ASP.net Core Anwendung, eine ASP.Net Core API und eine Blazor Anwendung in C# erstellt habe und in dieser Zeit gezwungenermaßen mit C# arbeiten musste. Und ich muss gestehen das ich mich echt wohlfühle. Mittlerweile rattert das ganz gut runter und bis auf ein paar kleine hänger hab ich im Grunde schon verinnerlicht und in Gewissen bereichen auch lieben gelernt.

    Ich kann zumindest stand heute die C# fraktion besser verstehen als noch vor nem Jahr.

    Grüße
    Sascha
    If _work = worktype.hard Then Me.Drink(Coffee)
    Seht euch auch meine Tutorialreihe <WPF Lernen/> an oder abonniert meinen YouTube Kanal.

    ## Bitte markiere einen Thread als "Erledigt" wenn deine Frage beantwortet wurde. ##

    ​Asp.net Core, Blazor und viele neue implementierungen (z.b. keine VB.Net Templates mehr für normale Wpf oder WinForms Projekte in .net 5) zwingen einem fast dazu. Leider.


    Hm, weder ASP.net, noch Blazor sagen mir überhaupt etwas, ich nehme mal an wenn ich das nicht kenne, und somit wohl auch nicht brauche, wäre der Punkt zu vernachlässigen ?
    Und was genau meinst du mit Templates ? Mir ist nicht bekannt das es WPF-Templates irgendwo in .Net gibt oder verstehe ich dich hier falsch ? (Forms nutz ich gar nicht mehr)

    Danke auf jeden Fall für deinen Input =)

    LG
    If Energy = Low Then
    Drink(aHugeCoffee)
    Else
    Drink(aHugeCoffeeToo)
    End If
    @asusdk Ich ziehe die einfachere Schreibweise von C# der komplizierteren vob VB.NET vor.
    Geschmackssache.
    Es gibt allerdings eine Reihe von feinen Unterschieden, wo das eine das andere überwiegt.
    Wie gesagt: Geschmackssache.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    @RodFromGermany Hey auch dir ein Danke für deinen Input, aber ich würde das sehr gerne nachvollziehen können, was findest du persönlich denn an der C# Schreibweise angenehmer als an der von VB, ich muss gestehen mich verwirren die klammern überall, ich finde das irgendwie sehr unübersichtlich, wobei das vermutlich auch eher Sache der gewohnheit ist ^^
    If Energy = Low Then
    Drink(aHugeCoffee)
    Else
    Drink(aHugeCoffeeToo)
    End If
    Hi,
    ich habe vor 20 Jahren eine Beta 2 vom .NET Framework 1 in die Hände bekommen und habe mir dort mal angeschaut, wie sich VB so weiter entwickelt hat - ich hatte VB6 in der Schule. Da bin ich dann das erste Mal auch auf C# gestoßen. Ich fand damals schon, dass man bei VB einfach zu viel tippen muss (Entwickler sind faule Menschen ;) ). Ständig Public Sub|Function, dann das nervige Dim ... As "DataType". Ich habe dann da einige meiner Schulprojekte nach C# konvertiert und war von da an der Sprache "erlegen".
    Ich finde es halt besser/schöner/toller, wenn ich anstelle von
    Dim userConsoleInput As String string userConsoleInput;, bzw. var userConsoleInput; schreiben kann.
    Und es ist mit C# 9 (.NET 5) noch einfacher geworden, eine Konsolenanwendung zu schreiben:

    C#-Quellcode

    1. using System;
    2. Console.WriteLine("Hello World!");

    VB ist für mich sicherlich eine gute Sprache, um das Programmieren zu erlenen - mehr aber auch nicht. Aber letztlich ist es einfach eine Geschmacks- und vielleicht auch Gewöhnungssache.

    asusdk schrieb:

    welches die kompliziertere Schreibweise von C# gegenüber VB rechtfertigen

    Kannst du mir hierfür ein Beispiel geben, was du mit komplizierter Schreibweise meinst?

    asusdk schrieb:

    Mir ist nicht bekannt das es WPF-Templates irgendwo in .Net gibt oder verstehe ich dich hier falsch ?

    Ich meine Project-Templates.
    Es gibt meines Wissens nach z.b. kein WPF Template für .Net Core 3 oder .Net 5 in VB, nur für C#. Schade!
    If _work = worktype.hard Then Me.Drink(Coffee)
    Seht euch auch meine Tutorialreihe <WPF Lernen/> an oder abonniert meinen YouTube Kanal.

    ## Bitte markiere einen Thread als "Erledigt" wenn deine Frage beantwortet wurde. ##

    asusdk schrieb:

    ich muss gestehen mich verwirren die klammern überall
    Ist bei mir (und ich vermute jetzt einfach mal bei vielen anderen auch) genau anders rum. Die Klammern geben dem Code irgendwie Struktur und mehr Übersicht. Wenn ich auf viel VB-Code schaue, dann sieht der ganze Text für mich aus wie ein Roma. In dem ganzen Fliesstext setzen sich die End If und End For viel zu wenig von dem anderen Code ab. Bei C# sind die }-Klammern finde ich viel deutlicher zu erkennen. Aber wie du schon gesagt hast, Geschmacks und Gewohnheitssache.
    @Nofear23m Hm, ich steh grad echt auf dem Schlauch was meinst du denn mit den Templates? Designspezifisches ? Das zumindest hab ich bislang noch nie benutzt da ich gar nichts darüber weis. Falls du vorlagen, für eine WPF Projekt meinst, hab ich auch noch nie benutzt, immer mit einem nakten WPF projekt gestartet, und dann erstmal Order erstellt, Klassen reinkopiert usw. oder meinst du was ganz was anderes evtl. ?

    @ISliceUrPanties Auch dir danke für deinen Input =)
    Um mal z.B. bei deinem Beispiel zu bleiben, so find ich: "Dim userConsoleInput As String" deutlich eindeutiger, da ich es tatsächlich als ganzen Satz wahrnehme und so auf Anhieb weiß, was nun mit der Zeile gemeint ist, (aber das ist vermutlich tatsächlich Gewohnheitssache)
    In erster linie meine ich aber das ganze geschwungene Klammerzeugs und die In Anführungszeichen komischen Zeichenfolgen wie z.B. == oder != usw. Es ist halt nicht auf Anhieb ersichtlich was damit gemeint ist, und ich stelle es mir durchaus kompliziert vor sich daran zu gewöhnen. Naja evtl. müsste ich mal1-2 Projekte in C# schreiben, aber bisher fühl ich mich schon stolz das ich kleine Codeschnipsel die der Telerik Converter nicht packt, meistens in VB umgeschrieben bekomme ^^
    If Energy = Low Then
    Drink(aHugeCoffee)
    Else
    Drink(aHugeCoffeeToo)
    End If

    asusdk schrieb:

    immer mit einem nakten WPF projekt gestartet

    Ja, das meinte ich. Habe gerade nachgesehen, mittlerweile gibts die auch für VB. Sorry. Gabs lange Zeit nicht. Sieht man mal wie lange ich kein VB Projekt mehr gestartet habe ;)

    Grüße
    If _work = worktype.hard Then Me.Drink(Coffee)
    Seht euch auch meine Tutorialreihe <WPF Lernen/> an oder abonniert meinen YouTube Kanal.

    ## Bitte markiere einen Thread als "Erledigt" wenn deine Frage beantwortet wurde. ##

    asusdk schrieb:

    komischen Zeichenfolgen wie z.B. == oder != usw.


    Ich finde die Schreibweise von "ist gleich" oder "nicht gleich" sehr logisch und ästhetisch. Zudem sehr treffend.
    Ich habe auch mal mit VB5 und später meinen Neu-Einstieg mit VB.NET begonnen. Aber von diesem Forum mal abgesehen habe ich einfach zuviel Müll "gelernt", eben die VB5/6 Altlasten.
    Zudem fand ich bei meinen Internet-Recherchen das Angebot an C#-Code und C#-Wissenden, die andere an ihrer Erfahrung teilhaben liessen, einfach überzeugender. Nach einer erstaunlich kurzen Eingewöhnungsphase mag ich mich heute mit VB.Net nicht mehr sonderlich gerne abgeben. Am Ende ist es überwiegend Gewöhnungssache. Ich denke aber der Support für VB wird weniger und die Qualität des Netzes, nun das hatte ich ja schon...
    Hm ok, das wären dann einige schlagende Argumente für die Verwendung von C# schade das nofears tuts bezüglich WPF auf VB.net basieren :P naja ich werd es mir demnächst mal genauer ansehen, evtl. fällt mir ein Umstieg nicht soo schwer wie aktuell befürchtet ^^
    If Energy = Low Then
    Drink(aHugeCoffee)
    Else
    Drink(aHugeCoffeeToo)
    End If
    Als ich anfing in VB auch immer ein Semikolon ans Zeilenende zu packen und immer erstaunt auf die Fehlerliste geschaut hab, bin ich auf C# umgestiegen. Ich arbeite fast nur mit sprachen mit C-Syntax, so sehr dran gewöhnt, das ich VB mittlerweile nicht mehr ohne "Problemchen" schreiben kann. Schreibe meist Typ zuerst bei deklaration, oder ; am Zeilenende und mehr lustige Fails.

    asusdk schrieb:

    schade das nofears tuts bezüglich WPF auf VB.net basieren

    Macht überhaupt nichts.

    Das lässt sich alles ganz leicht in C# übersetzen, und du kannst ja VB.Net. Also passt das für dich. In meinen Tutorials geht es ja um WPF, Binding, MVVM. Das hat ja erstmal nix mit der verwendeten Sprache zu tun, es geht ja um das System der WPF und da bleibt sowohl was die WPF, die XAML Syntax oder das MVVM Pattern betrifft komplett gleich, da ändert sich für einen C#ler garnix.

    Grüße
    Sascha
    If _work = worktype.hard Then Me.Drink(Coffee)
    Seht euch auch meine Tutorialreihe <WPF Lernen/> an oder abonniert meinen YouTube Kanal.

    ## Bitte markiere einen Thread als "Erledigt" wenn deine Frage beantwortet wurde. ##

    Sieht man mal wie lange ich kein VB Projekt mehr gestartet habe

    @Nofear23m schreibst du dann auch nur noch in C# ? Besteht dann evtl. die chance das dein WPF Tutorial auch in C# erscheint ? Ich weiss ich hatte Anfangs ziemliche Schwierigkeiten dir zu folgen, und schäme mich nachwievor dafür, aber ich denke zumindest behaupten zu können mittlerweile für mein Verhältniss enorme Fortschritte gemacht zu haben, und das ist großteils auf deine Tutorials und Unterstützung zurückzuführen daher fänd ich eine C# Version deines Tuts da wohl sehr hilfreich ^^ Muss einfach zugeben, nach dem ich die WPF nun echt lieben gelernt habe, könnt ich nicht mehr zu forms zurück ^^

    Als ich anfing in VB auch immer ein Semikolon ans Zeilenende zu packen und immer erstaunt auf die Fehlerliste geschaut hab, bin ich auf C# umgestiegen.

    @Takafusa das ist mitunter eines meiner Bedenken, ich denke ich habe noch nie mit diesen Semikolons gearbeitet, ich hätte wohl zumindest anfangs eher das Problem das ich die vergessen würde:P

    Nachtrag:
    ​Das lässt sich alles ganz leicht in C# übersetzen, und du kannst ja VB.Net. Also passt das für dich. In meinen Tutorials geht es ja um WPF, Binding, MVVM. Das hat ja erstmal nix mit der verwendeten Sprache zu tun, es geht ja um das System der WPF und da bleibt sowohl was die WPF, die XAML Syntax oder das MVVM Pattern betrifft komplett gleich, da ändert sich für einen C#ler garnix.


    Hm, ok, naja werd wohl echtmal 1-2 meiner Projekte in C# umschreiben müssen um zu gucken wie ich damit klarkomm
    If Energy = Low Then
    Drink(aHugeCoffee)
    Else
    Drink(aHugeCoffeeToo)
    End If
    Ich stimme @Nofear23m da voll und ganz zu. Wenn man sich mit C# anfängt zu beschäftigen, mag es so aussehen als wären die Unterschiede der Sprache groß, das stimmt aber nicht. Bis auf wenige Ausnahmen ist der Code identisch, von den sytnaktischen Eigenheiten abgesehen. Die lernt man aber sehr schnell und dann ist das manuelle übersetzen kaum noch als Fleißarbeit anzusehen. Nimmt man aber besser einen Editor für, oder halt einen der Code-Übersetzer. Ohne @Nofear23m seine Tutorials wäre mir mein Umstieg von Winforms nach WPF ja auch nicht gelungen. Und ich war da schon ein paar Jahre nur noch in C# unterwegs.
    Jo, die Klammerei in c# ist höchst problematisch.
    Habich ja schon erzählt - dass ich dann da immer so End-Kommentare hinmache, wenn sich dieses Geschwurbel über mehr als einen Bildschirm hinzieht. Damit man sieht, welche Klammer denn nun zu geht.

    Was mich noch deprimiert ist die c#-Editor-Einstellung all meiner c#-Kollegen: Jede öffnende Klammer belegt eine ganze Zeile! - Für mich als Kompakt-Coder ein Gräuel:

    C#-Quellcode

    1. {
    Man kann diese Einstellung ändern, sodass die öffnende Klammer hochgezogen wird in die Zeile davor, und die Methoden nicht so zerpflückt erscheinen - aber dann kommen die wieder mit "Geschmacksache" (was ja nicht richtig ist, weil wenn man ohne Kosten mehr sieht von einer Methode ist das ein Vorteil und keine Geschmacksache).
    Da gehts quasi nicht um den besten Weg, sondern um Macht - die Macht der Gewohnheit nämlich.
    Was muss ich dem Spinner überhaupt zuhören, wenn ich 4 Kollegen habe mit derselben Meinung wie ich?
    Also c#ler haben kein Empfinden für gutes, knappes Code-Layout, aber die c#-Macher, die erfinden eigenartigerweise trotzdem immer wieder mal Dinge, die sehr helfen, knappen, gut lesbaren Code zu schreiben.
    Etwa in vb diese blöden Properties, wo man 6 - 8 Zeilen für raushauen muss - sowas geht in c# in eine oder zwei - inklusive BackingField und INotifyPropertyChanged.

    Aber alles Peanuts. An c# gewöhnt man sich, wenn man muss, und ist dann auch nicht schlimmer als vb.
    Bleibt das Argument für Fortgeschrittene, dass die fortgeschrittene Community grösser ist, und für Anfänger, dass man nicht auf den vb6-Quatsch reinfallen kann.
    Naja ich habe halt ein paar kleine Bedenken, z.B. arbeite ich seit 2-3 Jahren (Ist nie weiter als ein paar Testprojekte gekommen) an einer Art Notizbuch für die Arbeit, aber ich scheitere nach wie vor daran wie ich realisieren könnte, das eine Notiz zu einer Categorie gehört, die wiederum einer Category angehören könnte, da scheitere ich aktuell noch dran da mir einfach kein Weg einfällt das ordentlich umzusetzen, und ich befürchte wenn ich da nun auf eine neue Syntax wechsle wird es erst recht eher ein Stolperstein, statt einer Verbesserung, ich würde es ansich gerne mit einem Treeview umsetzen, da man da die Categorys einfach zuklappen könnte, aber irgendwie wird für mich, wie sehr ich auch nachforsche kein Schuh drauss ^^ Naja kommt Zeit kommt Versuch oder wie hieß das :P
    If Energy = Low Then
    Drink(aHugeCoffee)
    Else
    Drink(aHugeCoffeeToo)
    End If
    @asusdk
    Aber für solche Probleme ist das Forum ja da und da können wir dir sicher auch Helfen. Gerade in der WPF ist das ja Easy und mit meiner Notiz-Vorlage hast du ja schon ein Beispiel an der Hand.

    Wenn du C# Anfängst kann ich dir nur folgenden Tipp mitgeben (von meiner Warte aus zumindest, weil das Beispiel von @ErfinderDesRades mit den geschweiften Klammern hatte mich Anfangs auch abgeschreckt):

    Nutze den Editor. Das ende (also wo die geschweifte Klammer zu geht) erkennt man echt wunderbar an den vertikalen Linien welche der Editor zwischen öffnender und schliessender Klammer zieht.

    Nutze den Editor. Konstrukte die in C# anders als in VB sind musst du Anfangs nicht auswendig können. z.b. für ne Schleife einfach forech oder for eintippen und zweimal TAB drücken. Schon wird dir ein Grundgerüst erstellt. Oder für einen Konstruktor ctor tippen usw.

    Nutze den Editor. Die Refactoringmöglichkeiten die es unter C# gibt sind um einiges besser als die unter VB.

    Nutze den Editor. Ich glaube du weist auf was ich raus will ;)

    Grüße
    Sascha
    If _work = worktype.hard Then Me.Drink(Coffee)
    Seht euch auch meine Tutorialreihe <WPF Lernen/> an oder abonniert meinen YouTube Kanal.

    ## Bitte markiere einen Thread als "Erledigt" wenn deine Frage beantwortet wurde. ##

    @Nofear23m
    Gerade in der WPF ist das ja Easy und mit meiner Notiz-Vorlage hast du ja schon ein Beispiel an der Hand.


    Naja mein Problem ist, das ich bei deiner Vorlage leider selbst mit meinen bisherigen Fortschritten nicht wirklich durchsteige ehrlich gesagt, evtl. hast du ja die Zeit / Lust das wir da nochmal einen Versuch starten? Ich verspreche auch das ich diesmal die Flinte nicht so leicht ins Korn werfe, dadurch das ich meine grundlegenden Fähigkeiten verbessert habe kann ich dir diesmal evtl. eher folgen, und auch eher fragen konstruieren, statt einfach nur zu sagen, das ich dir nicht folgen kann, wenn du mir dabei doch nochmal helfen magst würde ich dazu einen neuen Thread aufmachen ?

    Erstmal ehrlich gesagt eher weiterhin in VB, C# steht nach diesem Thread nun auf jeden fall mal auf meiner ToDo / will ich ausprobieren Liste, aber evtl. erstmal etwas später, es sei denn du meinst es würde mehr sinn machen es gleich in C# zu verscuhen ?

    Danke euch allen auf jeden Fall für euren Input =)


    Nachtrag:
    @ErfinderDesRades
    ​Was mich noch deprimiert ist die c#-Editor-Einstellung all meiner c#-Kollegen: Jede öffnende Klammer belegt eine ganze Zeile! - Für mich als Kompakt-Coder ein Gräuel:


    Ja das scheint mir auch eher schwachsinnig, vorallem die Hilfestellungen die ich bisher (und das sind fürwahr nicht wenige) von dir bekommen habe, haben mich dazu angehalten zu versuchen Code immer mit so wenig Zeilen wie möglich zu schreiben (Mit Ausnahme evtl. mit Linq-Sachen, da ich die oft in der langen schreibweise leichter verständlich finde), daher scheint mir das auch eher als eine Art Rückschritt
    If Energy = Low Then
    Drink(aHugeCoffee)
    Else
    Drink(aHugeCoffeeToo)
    End If