2008-12-13 6 views
5

Nehmen wir an, ich schreibe eine Bibliothek in C# und ich weiß nicht, wer es verbrauchen wird.Gibt es zu .NET kompatible Sprachen, die keine unsignierten Typen unterstützen?

Die öffentliche Schnittstelle der Bibliothek hat einige vorzeichenlose Typen - Uint, Ushort. Anscheinend sind diese Typen nicht CLS-konform und theoretisch gibt es möglicherweise Sprachen, die sie nicht konsumieren können.

Gibt es in Wirklichkeit solche Sprachen?

+0

Siehe diese Frage. Könnte ein Duplikat sein: http://stackoverflow.com/questions/6325/why-are-unsigned-ints-not-clls-compliant –

Antwort

5

Ich glaube an die ursprüngliche Version von VB.NET, unsigned Typen waren verwendbar, aber es gab keine Unterstützung für sie in die Sprache integriert. Dies wurde natürlich in späteren Versionen behandelt.

Außerdem vermute ich, dass das jetzt nicht mehr existierende J # keine Unterstützung für unsigned Typen (da Java keine hat).

5

.NET-Kompatibilität und CLS-Kompatibilität sind zwei verschiedene Dinge. Alles, was mit dem .NET-Framework in irgendeiner Weise funktionieren kann, könnte mit ihm kompatibel sein. CLS-Compliance ist strenger. Es bietet eine Reihe von Regeln für Sprachimplementierer und Bibliotheksdesigner, die folgen müssen, um ein Ökosystem von miteinander kompatiblen Sprachen und Bibliotheken zu schaffen.

Der Kernpunkt einer Sache wie der CLS ist, Ihnen zu erlauben, zu vermeiden, jedes Beispiel einer Sprache zu erforschen und herauszufinden, wie man sie alle unterstützt. Wenn Sie das tun wollen, können Sie das tun, aber die Alternative besteht darin, sich an den CLS zu halten und daher zu wissen, dass Sie mit allem anderen (aus der Vergangenheit, Gegenwart oder Zukunft) kompatibel sein werden, das auch dem CLS entspricht.

1

Wenn es heute keinen gibt, kann es einen morgen geben.