Der Rückgabetyp der <Prozedurname>-Funktion ist nicht CLS-kompatibel

Aktualisiert: November 2007

Return type of function '<procedurename>' is not CLS-compliant

Eine Function-Prozedur ist als <CLSCompliant(True)> markiert, gibt jedoch einen Typ zurück, der als <CLSCompliant(False)> markiert, nicht markiert oder nicht geeignet ist, da er nicht kompatibel ist.

Damit eine Prozedur mit der CLS (Common Language Specification) (CLS) kompatibel ist, darf sie nur CLS-kompatible Typen verwenden. Dies gilt für die Parametertypen, den Rückgabetyp und die Typen aller ihrer lokalen Variablen.

Die folgenden Visual Basic-Datentypen sind nicht CLS-kompatibel:

Wenn Sie CLSCompliantAttribute auf ein Programmierelement anwenden, legen Sie den isCompliant-Parameter des Attributs auf True oder auf False fest, um die Kompatibilität bzw. Nichtkompatibilität anzugeben. Es gibt keinen Standardwert für diesen Parameter, und Sie müssen einen Wert angeben.

Wenn Sie CLSCompliantAttribute nicht auf ein Element anwenden, wird dieses als nicht kompatibel betrachtet.

Standardmäßig ist diese Meldung eine Warnung. Informationen über das Ausblenden von Warnungen bzw. über die Behandlung von Warnungen als Fehler finden Sie unter Konfigurieren von Warnungen in Visual Basic.

Fehler-ID: BC40027

So beheben Sie diesen Fehler

  • Wenn die Function-Prozedur diesen speziellen Typ zurückgeben muss, entfernen Sie das CLSCompliantAttribute. Die Prozedur kann nicht CLS-kompatibel sein.

  • Wenn die Function-Prozedur CLS-kompatibel sein muss, ändern Sie den Rückgabetyp in den ähnlichsten CLS-kompatiblen Typ. Möglicherweise können Sie z. B. Integer anstelle von UInteger verwenden, wenn Sie den Wertebereich über 2.147.483.647 nicht benötigen. Wenn Sie den erweiterten Bereich benötigen, können Sie UInteger durch Long ersetzen.

  • Wenn Sie Verbindungen mit Automatisierungs- oder COM-Objekten verwenden, beachten Sie, dass einige Typen über andere Datenbreiten als in .NET Framework verfügen. Beispielsweise umfasst int in anderen Umgebungen oft 16 Bits. Wenn Sie an eine solche Komponente eine 16-Bit-Ganzzahl zurückgeben, deklarieren Sie sie im verwalteten Visual Basic-Code als Short und nicht als Integer.

Siehe auch

Konzepte

Schreiben von CLS-kompatiblem Code