Frage

Etwas, das ich nicht bin zu löschen, ich verstehe, gibt es Unterschiede zwischen C # und VB.NET (vor allem bei der Verwendung von Zeigern), aber warum, wenn beide eine gemeinsame CLR haben, tut XNA (zum Beispiel) nur mit C # arbeiten und nicht VB.NET, oder ist es, dass die Add-Ins zu Visual Studio hat in C # statt VB.Net gegolten, und infact die Spracherweiterungen in beide arbeiten

Sorry, wenn es eine offensichtliche Frage ist, dachte ich würde fragen,

War es hilfreich?

Lösung

Die CLR wurde auf verschiedene Plattformen portiert, von denen nicht alle gleich sind. Die XBox 360 CLR zum Beispiel haben nicht Reflection.Emit oder sogar alle der IL ops, die die volle CLR nicht . Daher kann eine andere Compiler emittieren kann IL-Codes, die auf die volle CLR legal sind, aber illegal auf der Compact CLR.

Das andere Problem ist die Verfügbarkeit von Klassenbibliotheken. Der vollständige BCL umfasst die Microsoft.VisualBasic Namespace, das ist automatisch durch den VB.NET Compiler verwiesen. Diese enthält VB6 Kompatibilität Funktionen, die < a href = "http://msdn.microsoft.com/en-us/library/microsoft.visualbasic.myservices.aspx" rel = "nofollow noreferrer"> Features My Namespace , sowie einige Compiler-Helferfunktionen , und als die VB allgemein bezeichnet wird. NET-Laufzeit.

Jedes Mal, wenn die CLR portiert wird, werden bestimmte Baugruppen portieren - und andere nicht. Für die XBox wurde Microsoft.VisualBasic nicht portiert. Das bedeutet, dass Sie nichts von diesem Namespace verweisen können. Während es ziemlich einfach ist, nicht die Kompatibilität oder My-Namespaces zu verweisen, können die Compiler-Services in der kompilierten IL eingefügt werden, ohne dass sie explizit aufrufen.

In VB.NET 8, könnten Sie ein undokumentierte und nicht unterstützte passieren -novbruntimeref wechseln vbc.exe, damit er nicht Referenzierung Microsoft.VisualBasic.dll. Leider würde dies manchmal seltsame Compilerfehler verursachen. In VB.NET 9, es werden dokumentiert und unterstützt und umbenannt / vbruntime .

Der dritte Fall ist addins und Visual Studio-Unterstützung. Dies ist bis zu den einzelnen Paketen, ob sie Vorlagen unterstützen, Code gen usw. für jede Sprache. Ich glaube, einige dritte Parteien VB.NET Vorlagen für XNA freigegeben haben, obwohl es ist nicht offiziell unterstützt .

Unterm Strich denke ich, ist, dass es sich um eine Mischung aus technischen Anliegen ist (CLR Ports, BCL Verfügbarkeit, Compiler IL-Ausgang) und Unterstützung (Prüfung, Finanzierung und Add-In für andere Sprachen).

Andere Tipps

Es ist der Werkzeugsatz, der die Sprachunterstützung definiert. XNA zum Beispiel tat einfach alle ihre Arbeit mit C # und nur Unterstützung für ihn geliefert. Man könnte noch eine App in VB.NET schreiben und es manuell über die Befehlszeile kompilieren. Solange Ihre App nicht auf illegale IL (Opcodes, die XNA nicht unterstützt) kompilieren nach unten hat es wird immer noch laufen. Das primäre Problem ist es, Ressourcen -. Sie haben nicht die Arbeitskräfte haben die volle Entwicklung und Erprobung von allen Sprachen zu tun, so dass sie nahm eine

Von allen Konten VB.NET und C # sind 99.9999 gleichwertig, wenn es um die CLR kommt. Aber es gibt einige kleine Unterschiede, die Sie beißen kann. In addtion erinnere ich mich auf einige Microsoft-Blog zu lesen, dass es einige Dinge, die CLR tun können, die (noch) nicht programmierbar entweder durch VB.NET oder C # und haben durch IL getan werden. Interessant in der Tat.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top