Freigeben über


Unterschiede bei der Entwicklung

Der wichtigste Unterschied zwischen den unterstützten Programmiersprachen ist natürlich die Sprachsyntax. Sowohl C++ als auch Visual Basic verfügen über einen etablierten Verlauf und eine ziemlich umfangreiche Grundlage an vorhandenem Code, was bei ihrer Aktualisierung für .NET berücksichtigt wurde. Visual C# beginnt jedoch mit einer reineren Vorlage. Mit dem entsprechenden Beispielcode in den folgenden Abschnitten werden mehrere erweiterte Themen eingeführt, z. B. der Buildprozess und die Definition von Namespaces. Hier werden jedoch zunächst einige der grundlegenderen Unterschiede zwischen den Sprachen erläutert.

Groß-/Kleinschreibung: Sowohl in C++ als auch in Visual C# wird zwischen Groß- und Kleinschreibung unterschieden, in Visual Basic jedoch nicht. Damit ein Programm CLS-kompatibel ist, dürfen sich öffentliche Member nicht nur in der Groß- und Kleinschreibung unterscheiden. Aufgrund dieser Einschränkung können in Visual Basic (und ggf. in anderen CLS-kompatiblen Sprachen) nicht nur Komponenten erstellt, sondern auch solche Komponenten verwendet werden, die in anderen Sprachen erstellt wurden, die zwischen Groß- und Kleinschreibung unterscheiden.

Verweise auf eine Bibliothek: Für die Verwendung von Klassen, die sich in Namespaces befinden, ist zunächst ein Verweis auf die Assembly erforderlich, die den benötigten Namespace enthält. Alle .NET-Programme verwenden (mindestens) den System-Namespace, der sich in der Datei Mscorlib.dll befindet. (Diese befindet sich in der Regel im Verzeichnis Windows\System.) Visual Basic und Visual C# verweisen implizit auf die Datei Mscorlib.dll, die folgende Präprozessordirektive muss jedoch in einem Managed Extensions for C++-Programm eingefügt werden:

#using <mscorlib.dll>

Obwohl Visual C# und Visual Basic implizit auf die mscorlib-Assembly verweisen, muss für andere Assemblies der Compilerschalter /reference verwendet werden. Referenzierte Bibliotheken befinden sich in der Regel im Anwendungsverzeichnis oder in einem Unterverzeichnis der Anwendung. Bibliotheken, die für die Verwendung durch viele Anwendungen (z. B. Tools von Fremdanbietern) vorgesehen sind, befinden sich im Assemblycache (Windows-Verzeichnis\Assembly) und müssen bestimmte Richtlinien einhalten. Anwendungskonfigurationsdateien können zusätzliche Optionen enthalten. Bei ASP.NET-Anwendungen sollten sich die Komponenten jedoch im Unterverzeichnis \Bin unter dem Anfangspunkt für das virtuelle Verzeichnis der Anwendung befinden.

Importieren eines Namespace: Klassen können entweder vollständig referenziert werden (z. B. System.IO.FileStream, was einem voll gekennzeichneten Pfadnamen entspricht), bzw. ihr Namespace kann in das Programm importiert werden. Anschließend ist es nicht mehr erforderlich, die enthaltenen Klassennamen voll zu kennzeichnen. Damit der Zugriff auf System-Objekte problemlos erfolgen kann, muss der entsprechende Namespace importiert werden (siehe unten stehende Tabelle).

Managed Extensions for C++
using namespace System;
Visual C#
using System;
Visual Basic
Imports System

Verweise auf Objektmember: Sowohl Visual Basic als auch Visual C# unterstützen den Punkt (.) als Bereichsauflösungsoperator, der beispielsweise die Syntax Console.WriteLine bei Verweisen auf die WriteLine-Methode von Console zulässt. Managed Extensions for C++ verwendet einen doppelten Doppelpunkt (::) als Auflösungsoperator.

Deklarieren von Objekten: In Managed Extensions for C++ und in Visual C# müssen Variablen deklariert werden, bevor sie verwendet werden können. In Visual Basic ist dies nicht der Fall. Sie erstellen eine neue Instanz eines Objekts, indem Sie das new-Schlüsselwort verwenden. Die folgende Tabelle enthält Beispielanweisungen für die Deklarationserstellung in allen drei Sprachen. Jede Anweisung deklariert und erstellt ein Objekt mit der Bezeichnung myComp vom Typ Comp, das sich im Lib-Namespace befindet.

C++
Lib::Comp* myComp = new Lib::Comp();
Visual C#
Lib.Comp myComp = new Lib.Comp();
Visual Basic
Dim myComp As New Lib.Comp

Programmeinsprungpunkt: Jedes ausführbare Programm muss über einen externen Einsprungpunkt verfügen, an dem die Anwendung mit der Ausführung beginnt. Für Managed Extensions for C++ hat sich die Syntax nicht geändert, in Visual C# und Visual Basic erfolgt jedoch alles in einer Klasse. Anhand des folgenden Codes wird die Managed Extensions for C++-Syntax demonstriert:

void main() {
}

Anhand des folgenden Codes wird die Visual C#-Syntax demonstriert:

class MainApp {
   public static void Main() {
   }
}

Anhand des folgenden Codes wird die Visual Basic-Syntax demonstriert:

Public Module modmain
   Sub Main()
   End Sub
End Module

Hinter den Kulissen wird der Einsprungpunkt durch den Managed Extensions for C++-Compiler jedoch in eine Klasse eingekapselt.

Definieren eines Namespace und einer Klasse: Alle drei Sprachen unterstützen das Erstellen von benutzerdefinierten Namespaces und von Klassen innerhalb dieser Namespaces. Alle drei Sprachen behandeln dies in Code, jedoch mit leicht unterschiedlicher Syntax. Managed Extensions for C++ verwendet beispielsweise eine verwaltete Klassendeklaration, und in Visual C# ist für Namespace- und Klassendeklarationen kein abschließendes Semikolon erforderlich. Anhand des folgenden Codes wird die Managed Extensions for C++-Syntax demonstriert:

namespace CompVC {
   __gc class StringComponent {
   public:
      StringComponent() {
      }
   };
};

Anhand des folgenden Codes wird die Visual C#-Syntax demonstriert:

namespace CompCS {
   public class StringComponent {
      public StringComponent() {...}
   }
}

Anhand des folgenden Codes wird die Visual Basic-Syntax demonstriert:

Namespace CompVB
   Public Class StringComponent
      Public Sub New()
      End Sub
   End Class
End Namespace

Siehe auch

Hello World | Schreiben einfacher .NET-Komponenten | Clients für die einfachen Komponenten | Zusammenfassung des Lernprogramms für Entwicklung | Anhang A: Tools zum Durchsuchen von Namespaces