Laden...

Vorteile von C# ggn VB

Erstellt von Thorden vor 20 Jahren Letzter Beitrag vor 20 Jahren 5.124 Views
T
Thorden Themenstarter:in
4 Beiträge seit 2004
vor 20 Jahren
Vorteile von C# ggn VB

Ich bin ja kein echter Experte, aber was sind eigentlich so die Vorteile von C# gegenüber VB?

Oberflächlich gesehen, schaun sie ja, bis auf ein paar Kleinigkeiten wie ;, [] o.ä. ziemlich identisch aus. Mir ist schon klar, dass sie vermutlich von der ganzen Architktur her sehr unterschiedlich sind, aber was hat C# was VB nicht hat?

Wär für eine Aufklärung dankbar 😉

mfg,
thorden

2.217 Beiträge seit 2003
vor 20 Jahren

Hi,

mh außer VB 6 (g) hab ich VB nur ganz kurz getstet von dem her kann ich da nichts sagen. C# ist eben neuer, (soll) Plattformunabhängig sein (klappt ja fast 😄) mhh und joa, wart mer am besten auf Leute die auch mal was richtig mit VB gemacht habn g

Viele Grüße
Alexander

F
529 Beiträge seit 2003
vor 20 Jahren

Tut der Vb7-Compiler nicht auch MsIl erzeugen, genau so wie der für Managed C++ und C#?

Besuchen sie das VisualC++ - Forum

C
980 Beiträge seit 2003
vor 20 Jahren

Original von Franknstein
Tut der Vb7-Compiler nicht auch MsIl erzeugen, genau so wie der für Managed C++ und C#?

genauso wie C# ... das heist aber noch lange nicht dass sie das gleiche "können", da sie nicht unbeding das ganze Spektrum ausnutzen müssen und es auch nicht gleichermassen tun ... (bei MC++ ist das ganze afaik leicht anders (mix..))

Bsp: in MSIL gibt es (wie auch bei anderen (echten) Assemblersprachen) sowas wie eine Schleife nicht. Es gibt daher überhaupt keinen Zwang, dass z.B. VB.NET auch sowas wie eine foreach Schleife implementieren müsste ... (tut sie aber, oder? hab noch nie was grösseres in VB.NET geschrieben)

Kann man in VB eigentlich den Indexer Operator überladen?

Ansonsten unterstützt VB.NET im Gegensatz zu C# keine Pointer (die sich für mich schon ein Argument - so muss man auch nicht immer gleich zu Managed C++ wechseln...)

V
842 Beiträge seit 2003
vor 20 Jahren

Original von cdr
Ansonsten unterstützt VB.NET im Gegensatz zu C# keine Pointer (die sich für mich schon ein Argument - so muss man auch nicht immer gleich zu Managed C++ wechseln...)

Kannst ja auch Standard-C++ benutzen.g

Was das Thema betrifft so kenne ich nur eine Basic Sprache und die sah mir sehr Pascal-Ähnlich aus.
Ansonsten, mal was ich bei Google mit der Suche:
"Visual Basic" +"C#" gefunden habe:
http://www.google.de/search?q=cache:dTCSoLQEopoJ:www.microsoft.com/germany/library/resourcesmod/vb_oder_c.ppt+%22Visual+Basic%22+%2B%22C%23%22&hl=de&lr=lang_de&ie=UTF-8
und was ich mit "Visual Basic" +"C#" +"Unterschied" gefunden habe, ein Artikel von Addison-Wesley. Ein Buch in dem die beiden Sprachen miteinander verglichen werden:
http://www.addison-wesley.de/katalog/bsp/3827319056bsp.pdf

Code-Hacker

445 Beiträge seit 2003
vor 20 Jahren

Hallo,

VB.net
-Bessere Code-Completion
-Keine Operator-Überladung
-Optionale Paramer in Funktionen
-Redim für Arrays

C#
-Systemsprache für .Net
-Keine Optional-Parameter
-Operator-Überladung

Das fällt mir jetzt so spontan ein...
🙂

Viele Grüße
www.mycsharp.de

Bitte vor dem Fragen immer in die FAQ schauen und die Suche benutzen. Danke.

C
980 Beiträge seit 2003
vor 20 Jahren

Original von Code-Hacker
Kannst ja auch Standard-C++ benutzen.g

Ich arbeite (zwangsweise) mehr mit ansi C als C++ (-> MIPS) ... aber hier geht es eigentlich um .NET projekte 😉

F
529 Beiträge seit 2003
vor 20 Jahren

Original von cdr
Ansonsten unterstützt VB.NET im Gegensatz zu C# keine Pointer (die sich für mich schon ein Argument - so muss man auch nicht immer gleich zu Managed C++ wechseln...)

Eigentlich ist es ja eh nicht so Sinn und Zweck einen Zeiger in C# zu verwenden....
Wenn ich mich recht ensinnen kann, sind die doch immer sehr fehleranfällig gewesen.

Außerdem, verbessert mich, wenn ich flasch liege, muss man eh den GC umgehen um in C# Zeiger verwenden zu können, oder?

Besuchen sie das VisualC++ - Forum

C
980 Beiträge seit 2003
vor 20 Jahren

Original von Franknstein
Eigentlich ist es ja eh nicht so Sinn und Zweck einen Zeiger in C# zu verwenden....
Wenn ich mich recht ensinnen kann, sind die doch immer sehr fehleranfällig gewesen.

Das würde ich so nicht sagen. MSIL/CTS/CLI stellen viele "Dienste" und Möglichkeiten zur Verfügung, die Pointer für normale Anwendungen unnötig machen, und können danach stark von der pointerlose und somit viel kontrollierbareren Umgebung profitieren. So stehen für die wichtigsten Anwendungen von Pointern in C++ in C#/.NET im Sinne der OOA schönere und sicherere Wege zur Verfügung (Reference Types und Boxing). Aber nicht für alle. Gerade für massive String Operationen (zb. das Parsen und verarbeiten eines 100 MB Textfile wie zb. einem Logfile) kannst du mit Pointern wesentlich eleganter umgehen (Stichwort '\0'), da der StringBuilder oft nicht flexibel genug ist und v.a. nicht mit Stream-fähig ist. Der zweite wichtige Punkt ist die Interoperabilität - mit nicht-.NET Anwendungen, Bibliotheken, etc. Schnell einen unsafe Block definieren ist wesentlich durchsichtiger und straight forward, als extra in ManagedC++ einen Wrapper zu schreiben ...

Fehleranfällig? Da du es nur noch sehr konzentriert einsetzten musst ist es ppraktisch nicht fehleranfällig da gut Überblickbar, vorausgesetzt natürlich du weisst was du tust. In C++ kann man bei komplexen Architekturen durchaus in recht unangenehme Situationen kommen, ja, speziell wenn man gleichzeitig Memory Leaks aber auch Segmentation Faults ausschliessen will (versehentlich doppeltes Speicherfreigeben ist da ein beliebter Kandidat) - aber auch dies ist schlussendlich durch konsequentes Befolgen eines übergreifenden Konzepts gut handlebar ...

Außerdem, verbessert mich, wenn ich flasch liege, muss man eh den GC umgehen um in C# Zeiger verwenden zu können, oder?

Falls du auf Objekte im GC zugreifen willst musst du natürlich kurzfristig diese Adressen fixieren, ja.

V
842 Beiträge seit 2003
vor 20 Jahren

Hallo!

Zeiger sind ein wehleidiges Thema, genau so wie das man den Adressoperator nicht benutzen soll. Zeiger sind eigentlich nicht so gefährlich wie immer gesagt wird, imho.
Das einzige was man wissen sollte ist was man tut bei der Operation mit Zeigern, sprich wieviel Speicherplatz verwendet wird und das man genau diesen und nicht mehr oder weniger wieder frei gibt. Und das man bei mehreren Zeigern auf die selbe Adresse den Überblick behält, wobei mehrere Zeiger auf einen Speicherbreich imho sowieso Schwachsinn ist.
Was man auch beachten sollte ist das man es so wenig wie möglich einsetzt um eine mögliche Fragmentierung des Speichers durch das ständige reservieren und freigeben von Speicher zu verhindern. Außerdem muss man aufpassen das man nicht durch falsche Zeigerverschieben (beispiel doppelt verkettete Liste und Elemente ein- bzw. ausfügen) Speicherlecks verursacht.

Wie zu sehen ist, wenn man sich "ein paar Punkte" über den Umgang mit Zeigern merkt (besser ist nachsehen) kann man nichts falsch machen. Man muss sich bei der Arbeit mit dynamischer Speicherreservierung nur gut konzentrieren und schon funktioniert es wie alles andere auch...g

Code-Hacker