Zum Inhalt springen

„Common Language Specification“ – Versionsunterschied

aus Wikipedia, der freien Enzyklopädie
[gesichtete Version][gesichtete Version]
Inhalt gelöscht Inhalt hinzugefügt
K Durchkopplung, Kleinkram
 
(Eine dazwischenliegende Version von einem anderen Benutzer wird nicht angezeigt)
Zeile 1: Zeile 1:
Die '''Common Language Specification''' ('''CLS''') ist ein Teil des [[Common Language Infrastructure|Common-Language-Infrastructure]]-Standards, der die Entwicklung von [[Programmiersprache|programmiersprachen]]neutralen Programmkomponenten ermöglicht.
Die '''Common Language Specification''' ('''CLS''') ist ein Teil des [[Common Language Infrastructure|Common-Language-Infrastructure]]-Standards, der die Entwicklung von [[programmiersprache]]nneutralen 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.
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 ==
== Konzept der Common Language Specification ==
Als Teil der programmiersprachenneutralen Plattform einer [[Common Language Infrastructure|Common-Language-Infrastructure]]-Implementierung (z. B. [[.NET]] von [[Microsoft]]) ist es notwendig, die Interaktion zwischen verschiedenen Programmiersprachen zu regeln.
Als Teil der programmiersprachenneutralen Plattform einer [[Common Language Infrastructure|Common-Language-Infrastructure]]-Implementierung (z. B. das [[.Net-Framework]] von [[Microsoft]]) ist es notwendig, die Interaktion zwischen verschiedenen Programmiersprachen zu regeln.
Da nicht jede Programmiersprache denselben Funktionsumfang bietet, ist eine sprachübergreifende Programmierung nicht automatisch möglich.
Da nicht jede Programmiersprache denselben 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 CLS spezifiziert aus diesem Grund eine Teilmenge des CLI-Standards, der von jeder CLS-kompatiblen Programmiersprache mindestens verstanden werden muss, um Sprachneutralität herzustellen.
Zeile 10: Zeile 10:
== Umsetzung der Common Language Specification ==
== 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.
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 Compiler (z. B. von [[C-Sharp|C#]] oder [[VB.NET]]) anweist bei der Kompilierung zu prüfen ob die CLS eingehalten wurde. Ist dies nicht der Fall, wird ein Compilerfehler erzeugt.
Dazu wird meist das Metadatenattribut [ClsCompliant (true)] verwendet, das den Compiler (z. B. von [[C-Sharp|C#]] oder [[VB.NET]]) anweist, bei der Kompilierung zu prüfen, ob die CLS eingehalten wurde. Ist dies nicht der Fall, wird ein Compilerfehler erzeugt.


Alle Teile der Klassenbibliotheken von .NET sind CLS-kompatibel.
Alle Teile der Klassenbibliotheken von .NET sind CLS-kompatibel.

Aktuelle Version vom 7. Dezember 2024, 20:07 Uhr

Die Common Language Specification (CLS) 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

[Bearbeiten | Quelltext bearbeiten]

Als Teil der programmiersprachenneutralen Plattform einer Common-Language-Infrastructure-Implementierung (z. B. das .Net-Framework von Microsoft) ist es notwendig, die Interaktion zwischen verschiedenen Programmiersprachen zu regeln. Da nicht jede Programmiersprache denselben 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

[Bearbeiten | Quelltext bearbeiten]

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 Compiler (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 Compilerfehler erzeugt.

Alle Teile der Klassenbibliotheken von .NET sind CLS-kompatibel.

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

  • Vorzeichenlose Datentypen, wie z. B. uint, ulong.
  • Elemente (Klassen, Methoden, Felder usw.), die sich nur durch eine unterschiedliche Großschreibung ihres Namens unterscheiden.
  • Pointer (Zeiger) und alle anderen damit in Verbindung stehenden Konstrukte und Sprachelemente (im Kontext von .NET als „unsafe“ bezeichnet).
  • Globale statische Methoden
  • Interfaces mit statischen Methoden oder Feldern
  • Klassen, die nicht von CLS-kompatiblen Klassen erben
  • Arrays variabler Größe oder Arrays, die nicht bei Element 0 beginnen
  • Überladen von Feldern und Ereignissen