Zum Inhalt springen

Common Language Specification

aus Wikipedia, der freien Enzyklopädie
Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 30. Juni 2007 um 14:54 Uhr durch 84.57.65.0 (Diskussion) (Umsetzung der Common Language Specification). Sie kann sich erheblich von der aktuellen Version unterscheiden.

Die CLS (Common Language Specification) ist ein Teil des Common Language Infrastructure Standards, der die Entwicklung von programmiersprachenneutralen Programmkomponenten ermöglicht. Die CLS garantiert, dass jedes Programm bzw. jeder Programmteil (z.B. eine einzelne Klasse) der CLS-konform entwickelt worden ist in jeder anderen CLS-kompatiblen Programmiersprache vollständig genutzt werden kann.

Konzept der Common Language Specification

Als Teil der programmiersprachenneutralen Platform einer Common Language Infrastructure-Implementierung (z.B. .NET von Microsoft) ist es notwendig die Interaktion zwischen verschiedenen Programmiersprachen zu regeln. Da nicht jede Programmiersprache den selben Funktionsumfang bietet ist eine sprachübergreifende Programmierung nicht automatisch möglich. Die CLS spezifiziert aus diesem Grund eine Teilmenge des CLI-Standards, der von jeder CLS-kompatiblen Programmiersprache mindestens verstanden werden muss um sprachneutralität herzustellen. Die Regeln der CLS gelten dabei immer nur für öffentliche (public oder protected) Schnittstellen. In der internen Realisierung gelten keinerlei Einschränkungen durch die CLS.

Umsetzung der Common Language Specification

Die meisten Programmiersprachen aus dem .Net-Umfeld erlauben es dem Entwickler zu wählen, ob er seine Programme oder Programmkomponenten CLS-kompatibel entwickeln will. Dazu wird meist das Metadatenattribut [ClsCompliant (true)] verwendet, das den Kompiler (z.B. von C# oder VB.Net) anweist bei der Kompilierung zu prüfen ob die CLS eingehalten wurde. Ist dies nicht der Fall wird ein Kompilerfehler erzeugt.

Alle Teile der Klassenbibliotheken von .Net sind CLS-kompatiblel.

Beispiele

Folgende Liste enthält einige Beispiel von nicht CLS-kompatiblen Elementen. Diese können zwar Teil der Implementierung sein, dürfen aber nicht als Teil der öffentlichen Schnittstellen eingesetzt werden.

  • Unsignierte Datentypen, wie z.B. uint, ulong.
  • Elemente (Klassen, Methoden, Felder, usw.) die sich nur durch eine unterschiedliche Kapitalisierung ihres Namens unterscheiden.
  • Pointer (Zeiger) und alle anderen damit in Verbindung stehenden Konstrukte und Sprachelemente (im Kontext von .Net als "unsafe" bezeichnet).