C# und VB.Net gemeinsam nutzen

Zugriff auf MS Office oder VB

In VB und VBA in Microsoft Office existieren optionale Parameter, das heißt Methoden können Werte erhalten oder nicht. Da weder VBA noch VB „echt“ objektorientiert sind, besitzen sie keine überladenen Methoden. Das bedeutet beispielsweise, dass Sie in VBA statt

Set wdDokNeu = Documents.Add(Template:="", NewTemplate:=False, DocumentType:= wdNewBlankDocument, Visible:=True)

schreiben können

Set wdDokNeu = Documents.Add

In VB.Net können Sie mit wdDokNeu = wdApp.Documents.Add() arbeiten, in C# müssen Sie auf die Konstante System.Missing zurückgreifen:

objMiss = System.Missing
wdDokNeu = wdApp.Documents.Add(objMiss, objMiss, objMiss, objMiss)

was bei vielen Codezeilen schnell zu Fehlern führen kann.

Klassen

Klassen unterschieden sich in den beiden Sprachen nicht: Beide verfügen über Konstruktoren, Methoden, Eigenschaften, überladene Methoden und Eigenschaften (und seit 2.0 auch Operatoren), Polymorphie sowie versiegelte, verschachtelte und abstrakte Klassen. Jedoch gibt es einen interessanten Aspekt der Unterscheidung:

Da der Konstruktor in VB.Net mit dem Schlüsselwort New erzeugt wird, ist er unabhängig vom Namen der Klasse. Beim Umbenennen der Klasse entstehen keine Probleme. In C# dagegen trägt der Konstruktor den gleichen Namen wie die Klasse. Beim Ändern des Klassennamens muss also auch der Name des Konstruktors geändert werden.