Ich war an Arbeitsplätzen, an denen zu Beginn eines Projekts die Frage "Sollten wir VB.Net oder C # verwenden" gestellt wurde.
Zugegeben, es ist wahrscheinlich weniger üblich, diese Entscheidung jetzt treffen zu müssen als in den frühen Tagen von .Net, insbesondere angesichts des Trends zur Sprachkonvergenz, aber es kann immer noch eine hitzige Debatte sein.
Welche Sprache bevorzugen Sie zwischen VB.Net und C # und warum?
Nur um einen Schraubenschlüssel in die Werke zu werfen, gibt es einige Produkte (z. B. WF-Designer in VS2010), die nur die VB.Net-Syntax unterstützen ...
Damovisa
Hier werden C # -Programmierer mehr bezahlt als die VB.NET-Programmierer.
SeanX
Ich habe den "ewigen" Teil des Titels entfernt, der eigentlich "unkonstruktiv" zu sein scheint. Die Frage selbst ist sehr nützlich und die Qualität der Antworten ist ein viel besserer Hinweis darauf, wie konstruktiv die berüchtigten "sechs Richtlinien" sind.
Wizard79
Ich frage mich oft, ob sich das umkehren wird, wenn der Trend zu C # anhält und Menschen mit VB.NET seltener werden und in der Lage sind, eine höhere Prämie zu erzielen.
+1 SO ersetzt schnell Google als meine bevorzugte Quelle für Programmierhilfe.
Anonymous Type
12
Die Frage ist, ob die 10-fache Anzahl von C # -Tags bedeutet, dass das Thema besser behandelt wird, mehr verwendet wird oder mehr Probleme hat. +1 auf die Verfügbarkeit von Arbeitsplätzen.
JeffO
12
Ich würde mich vor jedem Arbeitgeber hüten, der keinen VB.NET-Programmierer mit C # beauftragt.
Matt Olenik
@Anonymous: SO hat google durch Tag 2 ersetzt (vor über einem Jahr). FireFox zu Hause hat SO, MSDN und Programmierer als meine 3 Hauptsuchwebsites.
IAbstrakter
@IAbstract, lol, so wahr.
Anonym Typ
27
Ich hasse VB.NET. Die Tage, die ich noch damit verbringe, sind die Tage, die ich bereue. Das heißt, mein Geschmack ist ein Teil meiner Situation und Erfahrung und hat nicht unbedingt eine Bedeutung für das, was Sie tun ...
Ich denke, es ist wichtig, beim Vergleich von sich ständig weiterentwickelnden Sprachen wie C # und VB.NET einen Blick auf ihre Geschichte zu werfen und zu sehen, wie sie zu ihrem aktuellen Status gekommen sind:
Zu den ursprünglichen Vorteilen von BASIC auf Mikrocomputern gehörten Größe und Einfachheit (kleine, leicht zu analysierende Syntax für kleine, relativ schnelle Interpreten und Speicherplatz für das eigentliche Programm und die eigentlichen Daten), eine interaktive Umgebung, die das Experimentieren ermöglichte, und eine Syntax das vermied knappe Symbole und Strukturen für eine einigermaßen klare englische Syntax. Es war jedoch für große, strukturierte Programme schlecht geeignet und neigte dazu, Spaghetti-Code zu fördern. Seine Verfügbarkeit und Einfachheit machten es dennoch zu einer hervorragenden Wahl für eine Einführung in die Programmierung.
QuickBasic hat die Syntax aktualisiert, um größere strukturierte Programme zu ermöglichen, und eine Kompilierung hinzugefügt, um die Ausführung zu beschleunigen.
VisualBasic stellte einen leistungsstarken, benutzerfreundlichen Formularersteller zur Verfügung, mit dem GUI-Anwendungen schnell erstellt werden können. Gleichzeitig wurde die QB-Syntax für die Skripterstellung dieser Benutzeroberflächen übernommen. Es funktionierte am besten, wenn Benutzeroberflächen für Logik auf niedriger Ebene erstellt wurden, die als vorgefertigte Komponenten bereitgestellt wurden (normalerweise in einer anderen Sprache geschrieben). Mit der Zeit wurde die Syntax immer umfangreicher und inkonsistenter, da neue Funktionen hinzugefügt wurden. Das Hauptaugenmerk darauf, zuerst eine Benutzeroberfläche zu erstellen und dann einige Skriptelemente einzufügen, funktionierte gut für kleine, auf die Benutzeroberfläche ausgerichtete Anwendungen, ermutigte jedoch tendenziell zum Kopieren und Einfügen sowie zu einer Variation des Spaghetti-Codes, während die Wiederverwendung, die Komplexität der Datenstrukturen und die Beeinträchtigung der Funktionsweise vermieden wurden Trennung von Bedenken. In den Köpfen vieler wurde "VB-Code" zum Synonym für "Big Ball of Mud"; "VB-Programmierer" mit "unerfahrenem Hack".
VB.NET ist eine VB-ähnliche Sprache auf der .NET-Plattform, ein Versuch (nicht ganz erfolgreich), die überwucherte VB-Syntax zu bereinigen und zu modernisieren. Es war nicht perfekt mit vorhandenem VB-Code kompatibel und bemühte sich auch nicht, Kompatibilität mit VB- Formularen (wohl der wichtigste Teil von VB) zu gewährleisten. Diese links viele VB Produkte Besitzer mit der unangenehmen Wahl effektiv neu zu schreiben ihre Anwendungen in VB.NET (Umgang mit subtilen Inkompatibilitäten in jeder Routine , die nicht sorgfältig untersucht wurde) oder tatsächlich neu zu schreiben ihre Anwendungen in C # (Umgang mit einem fremden Syntax zusätzlich zudie neue Laufzeitbibliothek und Formulardesigner). Die meisten VB.NET-Benutzer waren VB-Benutzer, die sich nur an die Syntax hielten, viele benutzten sie als Krücke, während sie C # lernten. Infolgedessen erlangte es sofort einen Ruf als Zufluchtsort für Programmierer, die festgefahren waren, ihre Fähigkeiten nicht erweitern oder verbessern wollten oder konnten.
Zu diesem Zeitpunkt entwickelt sich VB.NET weiter und gibt langsam Gepäck ab, während neue und interessante Syntax (LINQ, XML-Literale) aufgegriffen werden. Dennoch behält es fast keinen der ursprünglichen Vorteile von BASIC bei: Es ist eine große, komplexe Sprache mit einer ziemlich steilen Lernkurve und begrenzten Möglichkeiten zum interaktiven Experimentieren.
Für alte Programmierer, die sich in den letzten über 30 Jahren daran gehalten haben, ist dies keine schlechte Wahl, vorausgesetzt, sie beschränken sich nicht darauf.
Für neue Programmierer ist die zunehmend vage Ähnlichkeit von VB-Programmen mit Englisch kaum die bizarren Anspielungen auf Abwärtskompatibilität und soziales Stigma wert.
Für neue Projekte ist VB.NET eine seltsame Wahl, es sei denn, das Projekt ist stark mit einer der wenigen Aufgaben befasst, für die die Sprache optimiert ist: Integration in schlecht typisierte COM-Komponenten (Office ...) (obwohl C # 4.0 diesen Vorteil erheblich verringert ) oder Inline-XML-Generierung.
Mit C # 4 sehe ich keinen Vorteil, den VB.Net in Bezug auf die COM-Integration noch hat. Ich denke, Inline-XML-Generierung könnte eine nützliche Funktion sein; Ich versuche, XML nicht zu verwenden (und bin in den letzten 5 Jahren erfolgreich gewesen!), Aber wenn ich ein .NET-Projekt habe, das viel XML generieren muss, werde ich wahrscheinlich ein VB-Projekt nur für die XML-Generierung erstellen.
Konfigurator
3
Ich habe es genossen, Ihre Antwort zu lesen, aber es schien plötzlich anzuhalten. Sie geben eine interessante Geschichte der Grundlagen an, und ich gehe davon aus, dass sie korrekt ist. Ich hatte erwartet, herauszufinden, warum Sie VB.NET nicht mögen und / oder warum Sie C # mögen. "Für neue Projekte ist VB.NET eine seltsame Wahl." Warum?
Tim Murphy
@Tim: Ich mag VB [.NET] nicht, weil der größte Teil des Codes, auf den ich stoße, untypisierter Spaghetti-Code ist, der von Programmierern geschrieben wurde, die ihn vor Jahren bei der Arbeit aufgegriffen haben (oder von solchen Programmierern unterrichtet wurden). Das ist jedoch nicht unbedingt ein guter Grund für andere , es nicht zu mögen. Ein besserer Grund ist einfach, dass die Sprache viel zu viele Zugeständnisse für die Abwärtskompatibilität gemacht hat ... und doch nicht wirklich abwärtskompatibel ist. Es sei denn, Sie
möchten
20
Ich bin mit beiden vertraut, habe aber einen Großteil meiner frühen Programmierarbeit in VB4, VB5 und VB6 geleistet. Jetzt, da beide Sprachen in .NET einige Iterationen durchlaufen haben und in ihren Fähigkeiten ziemlich konvergiert haben, finde ich die Debatte geradezu albern, sehr ähnlich wie "Was ist Ihre Lieblingsfarbe?".
Persönlich mag ich beide aus verschiedenen Gründen.
VB.NET
Viele Leute reden darüber, wie die C # -Syntax intuitiver ist, aber das ist sehr subjektiv und basiert stark auf dem, was Sie zu Beginn wussten. Ich würde argumentieren, dass die VB.NET-Syntax bei vollständiger Objektivität wahrscheinlich intuitiver ist, wenn Sie keine Vorkenntnisse in einer anderen Sprache voraussetzen. Wenn Sie zum Beispiel dasselbe Programm in C # und VB.NET verwenden, von dem Sie glauben, dass es für jemanden, der keine Programmierkenntnisse hat, besser zu entziffern ist. Scheint mir ziemlich klar.
Das andere Schöne an dieser Syntax ist, dass das Schließen von Strukturen (END IF, END WHILE, NEXT X) im Vergleich zum Bracketing-Modell viel expliziter ist. Dadurch wird der Code etwas besser lesbar und der Compiler kann häufig genauer bestimmen, welche Zeilennummer genau zu Kompilierungsfehlern führt. Wenn Sie wegen eines Compilerfehlers schon einmal auf der Suche nach fehlenden Klammern / Semikolons waren, wissen Sie, was ich meine.
Auch in der VB.NET-Win-Spalte fehlen meiner Meinung nach == / = als Vergleichs- / Zuweisungsoperatoren. Die seltenen Vorteile, für jeden einen eigenen Operator zu haben, werden niemals all die (manchmal) schwer zu entdeckenden Schwachstellen ausgleichen, die dadurch entstehen.
Schließlich hasse ich Groß- und Kleinschreibung in Programmiersprachen. Eine der Beschwerden über VB ist, dass es so viel Gepäck hat, aber C # hat den Albatros der Groß- und Kleinschreibung von C weitergeführt. Ich war noch nie in einer Situation, in der ich wollte, dass sich zwei Bezeichner im selben Bereich nur von Fall zu Fall unterscheiden. Es macht nur viel zu tun und verlangsamt mich. VB.NET bekommt in dieser Hinsicht einige Punkte über C #.
C #
-Programmierer lieben es, prägnant zu sein, weshalb sie meiner Meinung nach diese Syntax generell bevorzugen. Es hat nur einen gewissen ästhetischen Reiz. Aus einer ganz praktischen Perspektive mag ich es jedoch, weil es Sprachen wie Java, JavaScript und C ++ so ähnlich ist.
Da ich viel Web-Entwicklung mache, die sowohl Server- als auch Client-seitige Programmierung erfordert, fällt es mir leichter, mental zwischen C # und JavaScript zu wechseln, wie ich es häufig tun muss.
Ich mag auch die Tatsache, dass ich, wenn ich jemals auf Java- oder C ++ - Programmierung umsteigen müsste, einen kleinen Vorsprung hätte, wenn ich die meiste Zeit mit C # arbeiten würde.
+1 für den Kommentar zur Webentwicklung. Ich verwende je nach Projekt sowohl VB.NET als auch C # und finde es viel einfacher, zwischen C # und Javascript hin und her zu wechseln als VB.NET und JS.
Paperjam
2
"Ich war noch nie in einer Situation, in der ich wollte, dass sich zwei Bezeichner im selben Bereich nur von Fall zu Fall unterscheiden." ist rein subjektiv. Dies ist genau einer der Gründe, warum ich C # bevorzuge. Bei richtiger und konsequenter Anwendung kann es für die Welt sinnvoll sein, im Konstruktor beispielsweise einen Parameter mit dem Namen nameund eine öffentliche Eigenschaft mit dem Namen zu haben Nameund diesen dann zuzuweisen Name = name;. Solange Sie einen Kodierungsstandard einhalten, kann dies zu Verwirrung führen.
Aidiakapi
1
Einen Kodierungsstandard zu benötigen, um heimtückische Bugs wie diesen zu vermeiden, ist für mich negativ. Das Vorhandensein einer Problemumgehung entschuldigt dies nicht.
JohnFx
In jeder Programmiersprache sollte es schwierig sein, schlampigen Code zu schreiben. Die Unterscheidung zwischen Groß- und Kleinschreibung fördert nur schlampigen Code. Die Unterscheidung zwischen Groß- und Kleinschreibung verlangsamt Sie überhaupt nicht. Was für ein Argument ist das? Es verlangsamt dich, wenn du viele Tippfehler machst, und dann ist es gut, dass du verlangsamt wirst.
Falcon
Es ist nur schlampiger Code, da der Compiler ihn nicht interpretieren kann. Wenn bei allen Compilern die Groß- und Kleinschreibung nicht beachtet würde, wäre das kein Problem. Unsere Aufgabe ist es nicht, Code für den Druck in einer Zeitschrift zu schreiben, sondern Code zu schreiben, der einen Job erledigt. "Sloppy" verhindert dieses eine Bit nicht.
JohnFx
19
Ich bevorzuge die Klammer-Syntax von Sprachen im C-Stil gegenüber der "ausführlicheren" Syntax von Sprachen im BASIC-Stil.
Meine Einführung in die Programmierung erfolgte mit Turbo Pascal. (Das bisschen BASIC-Programmierung, das ich als Kind auf dem Commodore 64 gemacht habe, zählt nicht wirklich.) Nachdem ich Java gelernt habe, habe ich nie zurückgeschaut und die C-Syntax bevorzugt.
"" Ausführliche "Syntax von BASIC-Sprachen." - Ja, ich nie VB wieder sah , als ich sahif something then code endif
TheLQ
1
He, ich war überrascht, dass jemand dies abgelehnt hat. (Ich habe erwartet, dass es sich um die Frage von Emacs gegen Vim handelt.)
George Marian
3
@TheLQ: und auch die AndAlso!
Gerry
Ich vermisse meine Turbo Pascal Tage. Das hat sehr viel Spaß gemacht.
MetalMikester
1
Ich finde die Klammer-Syntax leichter zu lesen. Ein generisches Symbol für einen Block anstelle mehrerer kontextspezifischer Wörter.
Michael K
12
Sie sind funktional gleich, es gibt nichts, was Sie in einem tun können, was Sie in dem anderen nicht tun können, und Microsoft hat zugesagt, dass sich die Sprachteams für die Zukunft gleichmäßig entwickeln werden, sodass sich an dieser Äquivalenz wahrscheinlich nichts ändern wird.
[Anmerkung: Obwohl ich selbst ein C # -Entwickler bin, spiegelt die Schlussfolgerung des verlinkten Artikels nicht unbedingt meine persönliche Meinung wider, sondern ist nur ein interessanter alternativer Ansatz in der Debatte.]
@Thomas @WeekendWarrior: Gute Beispiele, aber nur um darauf hinzuweisen, sagte ich "Funktionell gleich", was sie sind. Beide werden in IL kompiliert, sodass derselbe Funktionsumfang erzielt werden kann. Diese Beispiele sind nur Sprachverknüpfungen für Funktionen, die auf andere Weise erzielt werden können.
Simon P Stevens
8
Ich bin von C und C ++ zu .NET gekommen (mit ein bisschen Java, Ada und Pascal), daher war C # für mich der natürliche Fortschritt.
Wenn ein Job hinzukam, der VB.NET erforderte, würde ich ihn mit Sicherheit nicht ablehnen.
Ich habe viel mit VB.NET gearbeitet, aber ich verstehe genug C #, um zu verstehen, was im Code vor sich geht. Meine derzeitige Vorliebe ist VB.NET, weil ich (offensichtlich) am besten mit VB.NET vertraut bin, aber ich habe keine wirkliche Vorliebe für eine ausführliche BASIC-Syntax und eine Syntax im C-Stil. Beide sind für mich sehr lesbar und verständlich.
Der größte Teil der Programmierkenntnisse meiner Mitarbeiter ist COBOL und VB6, daher war VB.NET für uns als Team die komfortablere Wahl für die .NET-Sprache. Es gab für uns keinen triftigen Grund, C # zu lernen, da sie funktional identisch sind.
Das heißt, das Erlernen von C # steht definitiv auf meiner Liste der zu erledigenden Aufgaben.
Ich habe die gleichen Probleme. :) und ich bevorzuge VB.NET genauso wie ich Cola nicht Pepsi bevorzuge. Wenn wir jedoch ein neues Projekt starten, ist C # die beste Wahl, da wir mehr Programmierer finden, die C # kennen und bevorzugen. Ich habe verstanden, dass die MS-Strategie für VB darin bestand, die VB-Community auf die .NET-Plattform zu bringen.
Pagotti
5
Ich bevorzuge C #.
Ich habe als VB.NET-Programmierer angefangen, aber im Laufe der Zeit wurde klar, dass eine ganze Reihe neuer Funktionen zuerst in C # und später in VB.NET verfügbar sind (z. B. automatische Eigenschaften). Und die Community rund um C # ist viel lebhafter als die von VB.NET.
Wenn Sie außerdem Java oder eine ähnliche Sprache lernen möchten, ist C # der bessere Ausgangspunkt - die Syntax ist in allen von C abgeleiteten Sprachen nahezu identisch. Obwohl dies für mich kein Wendepunkt wäre, da man Syntax sowieso schnell lernen kann.
"Features, die zuerst in C # verfügbar sind" Dies ist jedoch nicht immer der Fall. Siehe stackoverflow.com/questions/181188/... (Just another Schlüssel zu werfen in Arbeit)
Hinweis zur Selbsthilfe - denken Sie an einen Namen
Hier bin ich. Ich mag VB immer noch sehr, da ich hier angefangen habe, aber meiner Meinung nach hat C # eine bessere Syntax in Sachen Lambda-Ausdrücke. Andererseits hat VB XML-Literale, von denen C # nur träumen kann. Ich denke, es lohnt sich, ein separates VB-Projekt für schwere XML-Arbeit abzubrechen.
Kyralessa
1
Bei jeder Werkzeuggeneration verschieben sich die Argumente für "Features" etwas. Das einzige, was ich mir vorstellen kann, was C # ab vs2010 hat und was vb.net fehlt, sind Iteratoren; Im Gegensatz dazu bietet vb.net benannte Indexer, Ausnahmefilter, XML-Literale, einen "Ist" -Operator, der 1000-mal besser aussieht als Object.ReferenceEquals, eine Ereignisbehandlung, die fast richtig ausgeführt wird, und eine reibungslosere IDE-Erfahrung. VB.net ermöglicht es, wenn auch etwas umständlich, Feldinitialisierer zu veranlassen, Konstruktorparameter zu verwenden oder IDisposableObjekte sicher zu erstellen , ohne ThreadStaticVariablen verwenden zu müssen. C # nicht.
Supercat
5
Zusätzlich zu den anderen hier geposteten Antworten würde ich C # gegenüber VB wählen, da C # -Programmierer mehr bezahlt werden. Mehr Erfahrung mit C # = mehr $$ :)
Ich weiß, dass beide Sprachen fast gleich sind und es wirklich einfach ist, zwischen den beiden zu wechseln, aber ich denke, wenn das Management ein paar geschweifte Klammern und Semikolons ansieht, akzeptieren sie, dass wir etwas tun, was sie mit VB nicht tun können. Net sie könnten es anschauen und gehen "oh das muss nicht so schwer zu tun sein, wenn ich es verstehen kann".
Ich denke, ein ziemlich zutreffender Punkt, der je nach Branche / Region oft übersehen wird.
Anonym Typ
4
C #, weil ich mit minimalem Aufwand zwischen ihm und Java wechseln kann
VB.NET hat eine völlig andere Syntax. C #, ähnlich wie Java und andere Sprachen, gibt mir eine bessere Position, um mich schnell an neue Dinge anzupassen. Da die Ausgabe von C # und VB.NET praktisch austauschbar ist, ist es sinnvoll, mit C # zu arbeiten. Wenn sich der Code Ihres Unternehmens in C # befindet, ist es wahrscheinlicher, dass Sie einen Java-Entwickler in der Codierung von C # schulen können, als einen Java-Entwickler in VB. Es gibt nur subtile Vorteile, aber subtile sind immer noch von Vorteil.
Meine persönlichen Vorlieben beiseite legen. Als jemand, der in letzter Zeit rekrutiert hat (und versucht, rekrutiert zu werden), war der allgemeine Konsens, als wir diese Debatte im Büro hatten, dass wir versuchen sollten, von VB zu C # zu wechseln.
Warum? Weil C # auf dem Markt (ohnehin um uns herum) vorherrschender war, konnten wir leichter rekrutieren und leichter rekrutiert werden.
Es sieht so aus, als hätte sich der Kreis geschlossen. Leute lernen C #, weil Personalvermittler es wollen, weil es mehr Kandidaten gibt.
Als etwas älterer Entwickler (ist 59 "etwas" älter?) Habe ich BASIC zuerst auf einem Commodore VIC-20 gelernt, mir Turbo Pascal (v1!) Beigebracht, COBOL am College gelernt und 14 Jahre lang bei IBM gearbeitet Mainframes, mit kurzen Ablenkungen beim Schreiben einer mittelgroßen Anwendung in Revelation BASIC (eine Variante von PICK BASIC) und einiger Dienstprogramme in Modula-2, bevor Sie auf VB5 und VB6 umsteigen. Und dann kam .NET.
Aufgrund meines grundlegenden Hintergrunds dachte ich, ich sollte mit VB.NET anfangen, nur um festzustellen, dass ich immer wieder versuchte, Dinge auf die "alte" Art und Weise zu tun, und es hat mich verrückt gemacht (okay, mehr verrückt). Da ich in C gearbeitet hatte, dachte ich, ich würde C # einen Strudel geben, um zu sehen, wie das lief. Und OMG, das war wie ein Auftauchen aus einem dunklen Tunnel in klares Tageslicht! Völlig unerwartet. Und ich habe immer abfällige Geräusche von C als "Nur-Schreiben" -Sprache gemacht - "so schwer zu verstehen, dass ein C-Programmierer 6 Monate nach dem Schreiben nicht herausfinden konnte, was sein eigener Code tat", eine Beobachtung von Semi-berühmter Schriftsteller, den ich damals für niedlich hielt.
Da ich mit C nicht so vertraut war, war es für mich paradoxerweise einfacher, in C # .NET-Programmierung zu lernen, als in dem weitaus bekannteren Basic-Paradigma. Ich mag immer noch VB6, aber ich liebe C #. Die beste Programmiersprache der Welt.
Interessante Antwort, ich denke , das zumindest teilweise auf die Idee entlarvt , dass die „ältere Generation “ ist in der Regel Stick VB.NET über C #
Anonymous Typen
3
Ich entwickle in Visual Basic .Net seit 2001 und ich liebe es und ich hasse es !!!
Die Reihenfolge der Darstellung dieser Punkte basiert nur auf der Reihenfolge, in der er mir in den Sinn kam ...
In vb.net mit Visual Studio gibt es einen visuellen Zeilenumbruch zwischen jeder Methode und Eigenschaft. Für viele Menschen ist es kein guter Grund, vb.net gegenüber c # zu bevorzugen, aber ich verstehe nicht, warum das c # -Team von Microsoft es nicht implementiert hat. Es gibt ein Add-In, das diese Linie in c # zeichnet, aber danke, dass Microsoft ein ac # -Team und ein Visual Basic-Team hat, die nicht miteinander sprechen.
In vb.net haben Sie beim Erstellen einer Winform zwei Comboboxen im Visual Studio oben im Editor und können Ereignisse automatisch generieren, wenn Sie ein Ereignis in der rechten Combobox auswählen. Wenn Sie jeden Tag Dutzende von Ereignissen anhängen, kann es sehr umständlich sein, diese Funktion nicht zu verwenden. Mit c # haben Sie eine kleine Schaltfläche am oberen Rand des Eigenschaftsrasters, die ein Ereignis generieren kann, aber nicht so schnell wie in vb.net. Wenn Sie ein Ereignis des Steuerelements in c # anhängen und das Steuerelement im Formular löschen, muss der Delegat, der für den automatisch generierten Code zur Behandlung des Ereignisses erstellt wurde, manuell gelöscht werden. Nochmals vielen Dank Microsoft.
Wenn Sie in vb.net versuchen, eine Methode zu ändern, die eine linq-Abfrage enthält, ohne die Abfrage selbst zu ändern, ist dies kein Problem. In c # wird jedoch der gesamte Methodencode gesperrt. Wenn Sie viele linq-Abfragen oder Lambda-Ausdrücke haben, ist die Funktion zum Bearbeiten und Fortsetzen schnell eine gute alte Sache. Ok, ein bisschen übertrieben ... aber :)
Wenn Sie in vb.net einen Methodennamen erstellen und auf die Eingabetaste tippen, wird das "End-Sub" automatisch erstellt. In c #, mach es selbst. Ok, wenn Sie Resharper oder Devexpress installiert haben, ist es besser, aber warum all diese kleinen, aber großen Funktionen nicht in c # implementiert wurden.
Wenn Sie in vb.net Fehler in Ihrem Code haben, werden diese automatisch angezeigt und wenn Sie sie korrigieren, werden diese Fehler in Echtzeit aus dem Stapel entfernt. In c # müssen Sie Ihr Projekt erstellen, um zu erkennen, dass Sie die angegebenen Fehler erfolgreich korrigiert haben oder nicht. Warum C # -Team keine Option zur Überprüfung von Echtzeitfehlern wie in vb.net eingerichtet hat. Bei einer großen Lösung kann keine Echtzeit-Fehlerüberprüfung eine sehr schöne Leistungsoptimierung sein, aber ich mag es, wenn ein Stapel von Fehlern verschwindet, während ich ihn korrigiere.
Wie schon von anderen erwähnt, ist es meiner Meinung nach einfacher, die vb.net-Bedingung zu lesen, wenn ... und wenn, wählen Sie den Fall aus ... und wählen Sie aus, aber vergessen Sie, was ich gesagt habe.
Mit vb.net gibt es viele, viele Fehler in Visual Studio. Um nur einen in Visual Studio 2010 zu erwähnen, filtern die Intellisens die Aufzählung nicht richtig, wenn Sie den Modus "Allgemein" anstelle von "Alle" aktiviert haben.
Mit vb.net werden Sie als Dummy-Typ wahrgenommen, weil statisch gesehen mehr schlechte Programmierer vb.net anstelle von c # verwenden, weil es schwieriger ist, c # zu erlernen und eine bessere Programmierpraxis zu fördern.
Wie bereits erwähnt, haben C # -Programmierer bessere Chancen, mit mehr Geld einen guten Job zu haben.
Im Kopf des Kunden, vb.net = Typ, der in seinem Keller mit einem Bol Spaghetti Code programmiert. c # = wow, du bist sehr intelligent. Tatsache ist, dass Sie kein gutes Programm erstellen, sondern statisch, ja.
Mit all diesen Punkten habe ich beschlossen, meinen gesamten vb-Code in c # umzuwandeln. Ich programmiere mit den besten Methoden von objektorientiertem Design, sauberem Code mit Standards und strenger Syntax und ich kann seit 50 Jahren so programmieren, aber aus Sicht der Community bin ich kein guter Programmierer. Ich werde meinen Code in c # ohne andere bewährte Methoden konvertieren und eine andere Person sein. Ein toller Kerl, den man respektieren muss ..... :( Was für ein Witz ... !!! aber es ist die Realität.
Hier ist eine Sichtweise: Welche Sprache ist zwischen SO und CodePlex populärer? C # oder VB.Net?
Manchmal ist es gut, der Herde zu folgen, weil die Herde Ihnen helfen kann, wenn Sie sie brauchen. Standardmäßig ist C # schneller als Vb.Net. Ich glaube, dass die Verwendung von Option Strict dies jedoch ausgleichen könnte. Das letzte Mal, als ich IL zwischen den beiden verglichen habe, hat die Typensicherheit von VB.Net die IL um etwa 15% erhöht. Dies bedeutet zusätzlichen Overhead. UND ... bei Sprachen, die im Grunde das Gleiche tun, nehme ich die schnellere. Meine Bequemlichkeit sollte die Erfahrung meines Benutzers im Allgemeinen nicht außer Kraft setzen.
Ich möchte sagen, dass der einzige Grund, warum BASIC immer noch beliebt ist, darin besteht, dass es das erste Produkt von Microsoft war, und das seit 35 Jahren. Es sollte vor langer Zeit gestorben sein.
Vor diesem Hintergrund habe ich an zwei umfangreichen .NET-Projekten gearbeitet, und beide wurden mit VB.Net erstellt - obwohl es ein bisschen C # gab, weil entweder die Übersetzung ein Miststück war oder das Konstrukt in VB.Net nicht vorhanden war. Der einzige Vorteil, den ich bei VB.Net sehe, ist, dass der Visual Studio-Editor (meiner Erfahrung nach) wesentlich benutzerfreundlicher ist als bei C # - Intellisense scheint besser zu sein, ebenso die automatische Formatierung (beachten Sie, dass ich C # nicht verwendet habe). Möglicherweise fehlt mir auch etwas in der Konfiguration der IDE ...)
Ein großer Nachteil von VB.Net ist, dass in .NET 1.x eine Menge Müll aus der VB6-Ära eingebaut wurde, um die Konvertierung von VB6-Code zu vereinfachen. Das Zeug ist immer noch da und VB6-Codierer codieren neuen Code mit diesen ... "Erweiterungen" anstatt mit den neutraleren .NET-Klassen / Methoden / was auch immer. Ich weiß nicht, wie oft ich meinen Chef gefragt habe, warum er diesen Mist immer noch benutzt hat. "Aber ... es funktioniert ..." Richtig. Hey, ich mag es zu schlampen.
Auf der Suche nach Hilfe im Web stellte ich fest, dass sich die meisten Lösungen in C # befanden - siehe MSDN-Foren, verschiedene Blogs usw. Bücher konzentrieren sich in der Regel auf C #, und wenn es eine VB-Version gibt, auf C # kommt normalerweise Monate später (zB Pro LINQ .... von Apress.)
Viele Sprachen teilen die Vorfahren von C, was das Umschalten zwischen C, C ++, C #, Java, PHP und einigen anderen Sprachen erheblich erleichtert. PHP ist hier ein bisschen langwierig, hat aber eine Menge C-ähnlicher Konstrukte. VB? Nun, es ist so ziemlich seine eigene Kleinigkeit und das ist es auch.
Ein Projektleiter in meiner Organisation teilte mir kürzlich mit, dass immer mehr neue Projekte mit C # anstelle von VB - FINALLY entwickelt werden. Als .NET in unserer Organisation eingeführt wurde, haben sie sich mehr oder weniger offiziell für VB.Net entschieden, da die gesamte VB6-Codierung bereits im Gange war. Die Mächte, die später hinzukommen, gaben mir zu, dass dies nicht ihr bester Schachzug war.
Wie bereits erwähnt, würde ich ein VB.Net-Projekt nicht ablehnen, aber ich hoffe immer noch, dass es an meinem Arbeitsplatz langsam aus der neueren Entwicklung gestrichen wird.
Nun, heute gibt es kaum einen wirklichen Grund, VB.net zu nutzen. Am Anfang war es nur eine Möglichkeit, VB-Programmierern eine vertraute Syntax zu geben, es handelte sich jedoch im Wesentlichen um ein BASIC-ähnliches Remapping von C #. Ihr einziger wirklicher Vorteil ist also eine bekanntere Syntax, und ihre BASIC-Syntax ist auch ihre eigentliche einzige Grenze.
Im Laufe der Entwicklung der beiden Sprachen ist der einzige signifikante Unterschied der my Pseudo-Namespace.
Ich würde jedem .NET-Programmierer, der mit C # nicht vertraut ist, raten, es zu lernen, da die Community ziemlich größer ist und die C-ähnliche Syntax den meisten der am häufigsten verwendeten Sprachen gemeinsam ist.
Ein weiterer wichtiger Gesichtspunkt für die Existenz von VB.NET besteht darin, dass der Upgrade-Pfad für Projekte in ASP "Classic" / VBScript oder VB6 vereinfacht wurde. Es war viel weniger Arbeit, große vorhandene Anwendungen zu portieren.
JohnFx
1
VB die Sprache ist für Neulinge leichter zu lesen, sie neigen dazu, ihre erste, zweite und dritte Anwendung darin zu schreiben, und wir alle wissen, wie unsere ersten Anwendungen codiert sind - fürchterlich.
Programmierer aus C ++, Java usw. sind zu C # gewechselt, während VB.NET-Entwickler aus VBA-, VB- und BASIC-Umgebungen stammen, die wichtige nicht-traditionelle Programmierer sind.
Es scheinen mehr C # -Codebeispiele online zu sein als VB.NET-Beispiele. Es ist alles andere als schwer, eins in das andere umzuwandeln, aber warum sollte man sich die Mühe machen, wenn man es nicht muss?
C #. Es ist nur so, weil ich C und Java gemacht habe, also habe ich das Gefühl, dass C # für mich besser lesbar ist. C # ist für mich wie VB.NET für frühere VB-Programmierer.
Antworten:
Ich bevorzuge C # gegenüber VB.NET, weil
(von stackoverflow)
quelle
Ich hasse VB.NET. Die Tage, die ich noch damit verbringe, sind die Tage, die ich bereue. Das heißt, mein Geschmack ist ein Teil meiner Situation und Erfahrung und hat nicht unbedingt eine Bedeutung für das, was Sie tun ...
Ich denke, es ist wichtig, beim Vergleich von sich ständig weiterentwickelnden Sprachen wie C # und VB.NET einen Blick auf ihre Geschichte zu werfen und zu sehen, wie sie zu ihrem aktuellen Status gekommen sind:
Zu den ursprünglichen Vorteilen von BASIC auf Mikrocomputern gehörten Größe und Einfachheit (kleine, leicht zu analysierende Syntax für kleine, relativ schnelle Interpreten und Speicherplatz für das eigentliche Programm und die eigentlichen Daten), eine interaktive Umgebung, die das Experimentieren ermöglichte, und eine Syntax das vermied knappe Symbole und Strukturen für eine einigermaßen klare englische Syntax. Es war jedoch für große, strukturierte Programme schlecht geeignet und neigte dazu, Spaghetti-Code zu fördern. Seine Verfügbarkeit und Einfachheit machten es dennoch zu einer hervorragenden Wahl für eine Einführung in die Programmierung.
QuickBasic hat die Syntax aktualisiert, um größere strukturierte Programme zu ermöglichen, und eine Kompilierung hinzugefügt, um die Ausführung zu beschleunigen.
VisualBasic stellte einen leistungsstarken, benutzerfreundlichen Formularersteller zur Verfügung, mit dem GUI-Anwendungen schnell erstellt werden können. Gleichzeitig wurde die QB-Syntax für die Skripterstellung dieser Benutzeroberflächen übernommen. Es funktionierte am besten, wenn Benutzeroberflächen für Logik auf niedriger Ebene erstellt wurden, die als vorgefertigte Komponenten bereitgestellt wurden (normalerweise in einer anderen Sprache geschrieben). Mit der Zeit wurde die Syntax immer umfangreicher und inkonsistenter, da neue Funktionen hinzugefügt wurden. Das Hauptaugenmerk darauf, zuerst eine Benutzeroberfläche zu erstellen und dann einige Skriptelemente einzufügen, funktionierte gut für kleine, auf die Benutzeroberfläche ausgerichtete Anwendungen, ermutigte jedoch tendenziell zum Kopieren und Einfügen sowie zu einer Variation des Spaghetti-Codes, während die Wiederverwendung, die Komplexität der Datenstrukturen und die Beeinträchtigung der Funktionsweise vermieden wurden Trennung von Bedenken. In den Köpfen vieler wurde "VB-Code" zum Synonym für "Big Ball of Mud"; "VB-Programmierer" mit "unerfahrenem Hack".
VB.NET ist eine VB-ähnliche Sprache auf der .NET-Plattform, ein Versuch (nicht ganz erfolgreich), die überwucherte VB-Syntax zu bereinigen und zu modernisieren. Es war nicht perfekt mit vorhandenem VB-Code kompatibel und bemühte sich auch nicht, Kompatibilität mit VB- Formularen (wohl der wichtigste Teil von VB) zu gewährleisten. Diese links viele VB Produkte Besitzer mit der unangenehmen Wahl effektiv neu zu schreiben ihre Anwendungen in VB.NET (Umgang mit subtilen Inkompatibilitäten in jeder Routine , die nicht sorgfältig untersucht wurde) oder tatsächlich neu zu schreiben ihre Anwendungen in C # (Umgang mit einem fremden Syntax zusätzlich zudie neue Laufzeitbibliothek und Formulardesigner). Die meisten VB.NET-Benutzer waren VB-Benutzer, die sich nur an die Syntax hielten, viele benutzten sie als Krücke, während sie C # lernten. Infolgedessen erlangte es sofort einen Ruf als Zufluchtsort für Programmierer, die festgefahren waren, ihre Fähigkeiten nicht erweitern oder verbessern wollten oder konnten.
Zu diesem Zeitpunkt entwickelt sich VB.NET weiter und gibt langsam Gepäck ab, während neue und interessante Syntax (LINQ, XML-Literale) aufgegriffen werden. Dennoch behält es fast keinen der ursprünglichen Vorteile von BASIC bei: Es ist eine große, komplexe Sprache mit einer ziemlich steilen Lernkurve und begrenzten Möglichkeiten zum interaktiven Experimentieren.
quelle
Ich bin mit beiden vertraut, habe aber einen Großteil meiner frühen Programmierarbeit in VB4, VB5 und VB6 geleistet. Jetzt, da beide Sprachen in .NET einige Iterationen durchlaufen haben und in ihren Fähigkeiten ziemlich konvergiert haben, finde ich die Debatte geradezu albern, sehr ähnlich wie "Was ist Ihre Lieblingsfarbe?".
Persönlich mag ich beide aus verschiedenen Gründen.
VB.NET
Viele Leute reden darüber, wie die C # -Syntax intuitiver ist, aber das ist sehr subjektiv und basiert stark auf dem, was Sie zu Beginn wussten. Ich würde argumentieren, dass die VB.NET-Syntax bei vollständiger Objektivität wahrscheinlich intuitiver ist, wenn Sie keine Vorkenntnisse in einer anderen Sprache voraussetzen. Wenn Sie zum Beispiel dasselbe Programm in C # und VB.NET verwenden, von dem Sie glauben, dass es für jemanden, der keine Programmierkenntnisse hat, besser zu entziffern ist. Scheint mir ziemlich klar.
Das andere Schöne an dieser Syntax ist, dass das Schließen von Strukturen (END IF, END WHILE, NEXT X) im Vergleich zum Bracketing-Modell viel expliziter ist. Dadurch wird der Code etwas besser lesbar und der Compiler kann häufig genauer bestimmen, welche Zeilennummer genau zu Kompilierungsfehlern führt. Wenn Sie wegen eines Compilerfehlers schon einmal auf der Suche nach fehlenden Klammern / Semikolons waren, wissen Sie, was ich meine.
Auch in der VB.NET-Win-Spalte fehlen meiner Meinung nach == / = als Vergleichs- / Zuweisungsoperatoren. Die seltenen Vorteile, für jeden einen eigenen Operator zu haben, werden niemals all die (manchmal) schwer zu entdeckenden Schwachstellen ausgleichen, die dadurch entstehen.
Schließlich hasse ich Groß- und Kleinschreibung in Programmiersprachen. Eine der Beschwerden über VB ist, dass es so viel Gepäck hat, aber C # hat den Albatros der Groß- und Kleinschreibung von C weitergeführt. Ich war noch nie in einer Situation, in der ich wollte, dass sich zwei Bezeichner im selben Bereich nur von Fall zu Fall unterscheiden. Es macht nur viel zu tun und verlangsamt mich. VB.NET bekommt in dieser Hinsicht einige Punkte über C #.
C #
-Programmierer lieben es, prägnant zu sein, weshalb sie meiner Meinung nach diese Syntax generell bevorzugen. Es hat nur einen gewissen ästhetischen Reiz. Aus einer ganz praktischen Perspektive mag ich es jedoch, weil es Sprachen wie Java, JavaScript und C ++ so ähnlich ist.
Da ich viel Web-Entwicklung mache, die sowohl Server- als auch Client-seitige Programmierung erfordert, fällt es mir leichter, mental zwischen C # und JavaScript zu wechseln, wie ich es häufig tun muss.
Ich mag auch die Tatsache, dass ich, wenn ich jemals auf Java- oder C ++ - Programmierung umsteigen müsste, einen kleinen Vorsprung hätte, wenn ich die meiste Zeit mit C # arbeiten würde.
quelle
name
und eine öffentliche Eigenschaft mit dem Namen zu habenName
und diesen dann zuzuweisenName = name;
. Solange Sie einen Kodierungsstandard einhalten, kann dies zu Verwirrung führen.Ich bevorzuge die Klammer-Syntax von Sprachen im C-Stil gegenüber der "ausführlicheren" Syntax von Sprachen im BASIC-Stil.
Meine Einführung in die Programmierung erfolgte mit Turbo Pascal. (Das bisschen BASIC-Programmierung, das ich als Kind auf dem Commodore 64 gemacht habe, zählt nicht wirklich.) Nachdem ich Java gelernt habe, habe ich nie zurückgeschaut und die C-Syntax bevorzugt.
quelle
if something then code endif
Sie sind funktional gleich, es gibt nichts, was Sie in einem tun können, was Sie in dem anderen nicht tun können, und Microsoft hat zugesagt, dass sich die Sprachteams für die Zukunft gleichmäßig entwickeln werden, sodass sich an dieser Äquivalenz wahrscheinlich nichts ändern wird.
Die Unterschiede sind jetzt rein kultureller und persönlicher Natur. Dieser Artikel ist eine interessante Lektüre über die Unterschiede zwischen den Kulturen der Programmierer, die C # und VB.net verwenden
[Anmerkung: Obwohl ich selbst ein C # -Entwickler bin, spiegelt die Schlussfolgerung des verlinkten Artikels nicht unbedingt meine persönliche Meinung wider, sondern ist nur ein interessanter alternativer Ansatz in der Debatte.]
quelle
Ich bin von C und C ++ zu .NET gekommen (mit ein bisschen Java, Ada und Pascal), daher war C # für mich der natürliche Fortschritt.
Wenn ein Job hinzukam, der VB.NET erforderte, würde ich ihn mit Sicherheit nicht ablehnen.
quelle
Ich habe viel mit VB.NET gearbeitet, aber ich verstehe genug C #, um zu verstehen, was im Code vor sich geht. Meine derzeitige Vorliebe ist VB.NET, weil ich (offensichtlich) am besten mit VB.NET vertraut bin, aber ich habe keine wirkliche Vorliebe für eine ausführliche BASIC-Syntax und eine Syntax im C-Stil. Beide sind für mich sehr lesbar und verständlich.
Der größte Teil der Programmierkenntnisse meiner Mitarbeiter ist COBOL und VB6, daher war VB.NET für uns als Team die komfortablere Wahl für die .NET-Sprache. Es gab für uns keinen triftigen Grund, C # zu lernen, da sie funktional identisch sind.
Das heißt, das Erlernen von C # steht definitiv auf meiner Liste der zu erledigenden Aufgaben.
quelle
Ich bevorzuge C #.
Ich habe als VB.NET-Programmierer angefangen, aber im Laufe der Zeit wurde klar, dass eine ganze Reihe neuer Funktionen zuerst in C # und später in VB.NET verfügbar sind (z. B. automatische Eigenschaften). Und die Community rund um C # ist viel lebhafter als die von VB.NET.
Wenn Sie außerdem Java oder eine ähnliche Sprache lernen möchten, ist C # der bessere Ausgangspunkt - die Syntax ist in allen von C abgeleiteten Sprachen nahezu identisch. Obwohl dies für mich kein Wendepunkt wäre, da man Syntax sowieso schnell lernen kann.
quelle
Object.ReferenceEquals
, eine Ereignisbehandlung, die fast richtig ausgeführt wird, und eine reibungslosere IDE-Erfahrung. VB.net ermöglicht es, wenn auch etwas umständlich, Feldinitialisierer zu veranlassen, Konstruktorparameter zu verwenden oderIDisposable
Objekte sicher zu erstellen , ohneThreadStatic
Variablen verwenden zu müssen. C # nicht.Zusätzlich zu den anderen hier geposteten Antworten würde ich C # gegenüber VB wählen, da C # -Programmierer mehr bezahlt werden. Mehr Erfahrung mit C # = mehr $$ :)
Ich weiß, dass beide Sprachen fast gleich sind und es wirklich einfach ist, zwischen den beiden zu wechseln, aber ich denke, wenn das Management ein paar geschweifte Klammern und Semikolons ansieht, akzeptieren sie, dass wir etwas tun, was sie mit VB nicht tun können. Net sie könnten es anschauen und gehen "oh das muss nicht so schwer zu tun sein, wenn ich es verstehen kann".
quelle
C #, weil ich mit minimalem Aufwand zwischen ihm und Java wechseln kann
VB.NET hat eine völlig andere Syntax. C #, ähnlich wie Java und andere Sprachen, gibt mir eine bessere Position, um mich schnell an neue Dinge anzupassen. Da die Ausgabe von C # und VB.NET praktisch austauschbar ist, ist es sinnvoll, mit C # zu arbeiten. Wenn sich der Code Ihres Unternehmens in C # befindet, ist es wahrscheinlicher, dass Sie einen Java-Entwickler in der Codierung von C # schulen können, als einen Java-Entwickler in VB. Es gibt nur subtile Vorteile, aber subtile sind immer noch von Vorteil.
quelle
Meine persönlichen Vorlieben beiseite legen. Als jemand, der in letzter Zeit rekrutiert hat (und versucht, rekrutiert zu werden), war der allgemeine Konsens, als wir diese Debatte im Büro hatten, dass wir versuchen sollten, von VB zu C # zu wechseln.
Warum? Weil C # auf dem Markt (ohnehin um uns herum) vorherrschender war, konnten wir leichter rekrutieren und leichter rekrutiert werden.
Es sieht so aus, als hätte sich der Kreis geschlossen. Leute lernen C #, weil Personalvermittler es wollen, weil es mehr Kandidaten gibt.
quelle
Als etwas älterer Entwickler (ist 59 "etwas" älter?) Habe ich BASIC zuerst auf einem Commodore VIC-20 gelernt, mir Turbo Pascal (v1!) Beigebracht, COBOL am College gelernt und 14 Jahre lang bei IBM gearbeitet Mainframes, mit kurzen Ablenkungen beim Schreiben einer mittelgroßen Anwendung in Revelation BASIC (eine Variante von PICK BASIC) und einiger Dienstprogramme in Modula-2, bevor Sie auf VB5 und VB6 umsteigen. Und dann kam .NET.
Aufgrund meines grundlegenden Hintergrunds dachte ich, ich sollte mit VB.NET anfangen, nur um festzustellen, dass ich immer wieder versuchte, Dinge auf die "alte" Art und Weise zu tun, und es hat mich verrückt gemacht (okay, mehr verrückt). Da ich in C gearbeitet hatte, dachte ich, ich würde C # einen Strudel geben, um zu sehen, wie das lief. Und OMG, das war wie ein Auftauchen aus einem dunklen Tunnel in klares Tageslicht! Völlig unerwartet. Und ich habe immer abfällige Geräusche von C als "Nur-Schreiben" -Sprache gemacht - "so schwer zu verstehen, dass ein C-Programmierer 6 Monate nach dem Schreiben nicht herausfinden konnte, was sein eigener Code tat", eine Beobachtung von Semi-berühmter Schriftsteller, den ich damals für niedlich hielt.
Da ich mit C nicht so vertraut war, war es für mich paradoxerweise einfacher, in C # .NET-Programmierung zu lernen, als in dem weitaus bekannteren Basic-Paradigma. Ich mag immer noch VB6, aber ich liebe C #. Die beste Programmiersprache der Welt.
quelle
Ich entwickle in Visual Basic .Net seit 2001 und ich liebe es und ich hasse es !!!
Die Reihenfolge der Darstellung dieser Punkte basiert nur auf der Reihenfolge, in der er mir in den Sinn kam ...
In vb.net mit Visual Studio gibt es einen visuellen Zeilenumbruch zwischen jeder Methode und Eigenschaft. Für viele Menschen ist es kein guter Grund, vb.net gegenüber c # zu bevorzugen, aber ich verstehe nicht, warum das c # -Team von Microsoft es nicht implementiert hat. Es gibt ein Add-In, das diese Linie in c # zeichnet, aber danke, dass Microsoft ein ac # -Team und ein Visual Basic-Team hat, die nicht miteinander sprechen.
In vb.net haben Sie beim Erstellen einer Winform zwei Comboboxen im Visual Studio oben im Editor und können Ereignisse automatisch generieren, wenn Sie ein Ereignis in der rechten Combobox auswählen. Wenn Sie jeden Tag Dutzende von Ereignissen anhängen, kann es sehr umständlich sein, diese Funktion nicht zu verwenden. Mit c # haben Sie eine kleine Schaltfläche am oberen Rand des Eigenschaftsrasters, die ein Ereignis generieren kann, aber nicht so schnell wie in vb.net. Wenn Sie ein Ereignis des Steuerelements in c # anhängen und das Steuerelement im Formular löschen, muss der Delegat, der für den automatisch generierten Code zur Behandlung des Ereignisses erstellt wurde, manuell gelöscht werden. Nochmals vielen Dank Microsoft.
Wenn Sie in vb.net versuchen, eine Methode zu ändern, die eine linq-Abfrage enthält, ohne die Abfrage selbst zu ändern, ist dies kein Problem. In c # wird jedoch der gesamte Methodencode gesperrt. Wenn Sie viele linq-Abfragen oder Lambda-Ausdrücke haben, ist die Funktion zum Bearbeiten und Fortsetzen schnell eine gute alte Sache. Ok, ein bisschen übertrieben ... aber :)
Wenn Sie in vb.net einen Methodennamen erstellen und auf die Eingabetaste tippen, wird das "End-Sub" automatisch erstellt. In c #, mach es selbst. Ok, wenn Sie Resharper oder Devexpress installiert haben, ist es besser, aber warum all diese kleinen, aber großen Funktionen nicht in c # implementiert wurden.
Wenn Sie in vb.net Fehler in Ihrem Code haben, werden diese automatisch angezeigt und wenn Sie sie korrigieren, werden diese Fehler in Echtzeit aus dem Stapel entfernt. In c # müssen Sie Ihr Projekt erstellen, um zu erkennen, dass Sie die angegebenen Fehler erfolgreich korrigiert haben oder nicht. Warum C # -Team keine Option zur Überprüfung von Echtzeitfehlern wie in vb.net eingerichtet hat. Bei einer großen Lösung kann keine Echtzeit-Fehlerüberprüfung eine sehr schöne Leistungsoptimierung sein, aber ich mag es, wenn ein Stapel von Fehlern verschwindet, während ich ihn korrigiere.
Wie schon von anderen erwähnt, ist es meiner Meinung nach einfacher, die vb.net-Bedingung zu lesen, wenn ... und wenn, wählen Sie den Fall aus ... und wählen Sie aus, aber vergessen Sie, was ich gesagt habe.
Mit vb.net gibt es viele, viele Fehler in Visual Studio. Um nur einen in Visual Studio 2010 zu erwähnen, filtern die Intellisens die Aufzählung nicht richtig, wenn Sie den Modus "Allgemein" anstelle von "Alle" aktiviert haben.
Mit vb.net werden Sie als Dummy-Typ wahrgenommen, weil statisch gesehen mehr schlechte Programmierer vb.net anstelle von c # verwenden, weil es schwieriger ist, c # zu erlernen und eine bessere Programmierpraxis zu fördern.
Wie bereits erwähnt, haben C # -Programmierer bessere Chancen, mit mehr Geld einen guten Job zu haben.
Im Kopf des Kunden, vb.net = Typ, der in seinem Keller mit einem Bol Spaghetti Code programmiert. c # = wow, du bist sehr intelligent. Tatsache ist, dass Sie kein gutes Programm erstellen, sondern statisch, ja.
Mit all diesen Punkten habe ich beschlossen, meinen gesamten vb-Code in c # umzuwandeln. Ich programmiere mit den besten Methoden von objektorientiertem Design, sauberem Code mit Standards und strenger Syntax und ich kann seit 50 Jahren so programmieren, aber aus Sicht der Community bin ich kein guter Programmierer. Ich werde meinen Code in c # ohne andere bewährte Methoden konvertieren und eine andere Person sein. Ein toller Kerl, den man respektieren muss ..... :( Was für ein Witz ... !!! aber es ist die Realität.
quelle
Hier ist eine Sichtweise: Welche Sprache ist zwischen SO und CodePlex populärer? C # oder VB.Net?
Manchmal ist es gut, der Herde zu folgen, weil die Herde Ihnen helfen kann, wenn Sie sie brauchen. Standardmäßig ist C # schneller als Vb.Net. Ich glaube, dass die Verwendung von Option Strict dies jedoch ausgleichen könnte. Das letzte Mal, als ich IL zwischen den beiden verglichen habe, hat die Typensicherheit von VB.Net die IL um etwa 15% erhöht. Dies bedeutet zusätzlichen Overhead. UND ... bei Sprachen, die im Grunde das Gleiche tun, nehme ich die schnellere. Meine Bequemlichkeit sollte die Erfahrung meines Benutzers im Allgemeinen nicht außer Kraft setzen.
quelle
Ich möchte sagen, dass der einzige Grund, warum BASIC immer noch beliebt ist, darin besteht, dass es das erste Produkt von Microsoft war, und das seit 35 Jahren. Es sollte vor langer Zeit gestorben sein.
Vor diesem Hintergrund habe ich an zwei umfangreichen .NET-Projekten gearbeitet, und beide wurden mit VB.Net erstellt - obwohl es ein bisschen C # gab, weil entweder die Übersetzung ein Miststück war oder das Konstrukt in VB.Net nicht vorhanden war. Der einzige Vorteil, den ich bei VB.Net sehe, ist, dass der Visual Studio-Editor (meiner Erfahrung nach) wesentlich benutzerfreundlicher ist als bei C # - Intellisense scheint besser zu sein, ebenso die automatische Formatierung (beachten Sie, dass ich C # nicht verwendet habe). Möglicherweise fehlt mir auch etwas in der Konfiguration der IDE ...)
Ein großer Nachteil von VB.Net ist, dass in .NET 1.x eine Menge Müll aus der VB6-Ära eingebaut wurde, um die Konvertierung von VB6-Code zu vereinfachen. Das Zeug ist immer noch da und VB6-Codierer codieren neuen Code mit diesen ... "Erweiterungen" anstatt mit den neutraleren .NET-Klassen / Methoden / was auch immer. Ich weiß nicht, wie oft ich meinen Chef gefragt habe, warum er diesen Mist immer noch benutzt hat. "Aber ... es funktioniert ..." Richtig. Hey, ich mag es zu schlampen.
Auf der Suche nach Hilfe im Web stellte ich fest, dass sich die meisten Lösungen in C # befanden - siehe MSDN-Foren, verschiedene Blogs usw. Bücher konzentrieren sich in der Regel auf C #, und wenn es eine VB-Version gibt, auf C # kommt normalerweise Monate später (zB Pro LINQ .... von Apress.)
Viele Sprachen teilen die Vorfahren von C, was das Umschalten zwischen C, C ++, C #, Java, PHP und einigen anderen Sprachen erheblich erleichtert. PHP ist hier ein bisschen langwierig, hat aber eine Menge C-ähnlicher Konstrukte. VB? Nun, es ist so ziemlich seine eigene Kleinigkeit und das ist es auch.
Ein Projektleiter in meiner Organisation teilte mir kürzlich mit, dass immer mehr neue Projekte mit C # anstelle von VB - FINALLY entwickelt werden. Als .NET in unserer Organisation eingeführt wurde, haben sie sich mehr oder weniger offiziell für VB.Net entschieden, da die gesamte VB6-Codierung bereits im Gange war. Die Mächte, die später hinzukommen, gaben mir zu, dass dies nicht ihr bester Schachzug war.
Wie bereits erwähnt, würde ich ein VB.Net-Projekt nicht ablehnen, aber ich hoffe immer noch, dass es an meinem Arbeitsplatz langsam aus der neueren Entwicklung gestrichen wird.
quelle
Nun, heute gibt es kaum einen wirklichen Grund, VB.net zu nutzen. Am Anfang war es nur eine Möglichkeit, VB-Programmierern eine vertraute Syntax zu geben, es handelte sich jedoch im Wesentlichen um ein BASIC-ähnliches Remapping von C #. Ihr einziger wirklicher Vorteil ist also eine bekanntere Syntax, und ihre BASIC-Syntax ist auch ihre eigentliche einzige Grenze.
Im Laufe der Entwicklung der beiden Sprachen ist der einzige signifikante Unterschied der
my
Pseudo-Namespace.Ich würde jedem .NET-Programmierer, der mit C # nicht vertraut ist, raten, es zu lernen, da die Community ziemlich größer ist und die C-ähnliche Syntax den meisten der am häufigsten verwendeten Sprachen gemeinsam ist.
quelle
VB die Sprache ist für Neulinge leichter zu lesen, sie neigen dazu, ihre erste, zweite und dritte Anwendung darin zu schreiben, und wir alle wissen, wie unsere ersten Anwendungen codiert sind - fürchterlich.
Programmierer aus C ++, Java usw. sind zu C # gewechselt, während VB.NET-Entwickler aus VBA-, VB- und BASIC-Umgebungen stammen, die wichtige nicht-traditionelle Programmierer sind.
quelle
Es scheinen mehr C # -Codebeispiele online zu sein als VB.NET-Beispiele. Es ist alles andere als schwer, eins in das andere umzuwandeln, aber warum sollte man sich die Mühe machen, wenn man es nicht muss?
quelle
Ich bevorzuge VB .Net gegenüber C #,
quelle
C #. Es ist nur so, weil ich C und Java gemacht habe, also habe ich das Gefühl, dass C # für mich besser lesbar ist. C # ist für mich wie VB.NET für frühere VB-Programmierer.
quelle