|
Dieser Artikel wurde manuell übersetzt. Bewegen Sie den Mauszeiger über die Sätze im Artikel, um den Originaltext anzuzeigen. Weitere Informationen
|
Übersetzung
Original
|
Allgemeines Typsystem
-
Aufbau eines Frameworks, das die sprachübergreifende Integration, Typsicherheit sowie eine äußerst leistungsfähige Codeausführung ermöglicht. -
Bereitstellung eines objektorientierten Modells, das die vollständige Implementierung zahlreicher Programmiersprachen unterstützt. -
Definition von Regeln, die von Programmiersprachen eingehalten werden müssen und sicherstellen, dass in verschiedenen Sprachen programmierte Objekte miteinander interagieren können. -
Bereitstellung einer Bibliothek, die die bei der Anwendungsentwicklung verwendeten primitiven Datentypen enthält (z. B. Boolean, Byte, Char, Int32 und UInt64).
Klassen
|
|
|
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Hinweis
|
|---|
|
|
Strukturen
Enumerationen
-
Sie können keine eigenen Methoden definieren. -
Sie können keine Schnittstellen implementieren. -
Sie können keine Eigenschaften oder Ereignisse definieren. -
Sie können nicht generisch sein, es sei denn, sie sind nur deshalb generisch, weil sie in einem generischen Typ geschachtelt sind. Das bedeutet, dass eine Enumeration nicht über eigene Typparameter verfügen kann.
Hinweis
Geschachtelte Typen (z. B. Enumerationen), die mit Visual Basic, C# oder C++ erstellt wurden, enthalten die Typparameter aller einschließenden generischen Typen und sind daher generisch, auch wenn sie über keine eigenen Typparameter verfügen. Weitere Informationen finden Sie im Referenzthema Type.MakeGenericType unter "Geschachtelte Typen".
using System; using System.Collections.Generic; // A traditional enumeration of some root vegetables. public enum SomeRootVegetables { HorseRadish, Radish, Turnip } // A bit field or flag enumeration of harvesting seasons. [Flags] public enum Seasons { None = 0, Summer = 1, Autumn = 2, Winter = 4, Spring = 8, All = Summer | Autumn | Winter | Spring } public class Example { public static void Main() { // Hash table of when vegetables are available. Dictionary<SomeRootVegetables, Seasons> AvailableIn = new Dictionary<SomeRootVegetables, Seasons>(); AvailableIn[SomeRootVegetables.HorseRadish] = Seasons.All; AvailableIn[SomeRootVegetables.Radish] = Seasons.Spring; AvailableIn[SomeRootVegetables.Turnip] = Seasons.Spring | Seasons.Autumn; // Array of the seasons, using the enumeration. Seasons[] theSeasons = new Seasons[] { Seasons.Summer, Seasons.Autumn, Seasons.Winter, Seasons.Spring }; // Print information of what vegetables are available each season. foreach (Seasons season in theSeasons) { Console.Write(String.Format( "The following root vegetables are harvested in {0}:\n", season.ToString("G"))); foreach (KeyValuePair<SomeRootVegetables, Seasons> item in AvailableIn) { // A bitwise comparison. if (((Seasons)item.Value & season) > 0) Console.Write(String.Format(" {0:G}\n", (SomeRootVegetables)item.Key)); } } } } // The example displays the following output: // The following root vegetables are harvested in Summer: // HorseRadish // The following root vegetables are harvested in Autumn: // Turnip // HorseRadish // The following root vegetables are harvested in Winter: // HorseRadish // The following root vegetables are harvested in Spring: // Turnip // Radish // HorseRadish
Schnittstellen
-
Eine Schnittstelle kann mit beliebigem Zugriff deklariert werden, die Schnittstellenmember müssen jedoch alle über die Zugriffsart public verfügen. -
Schnittstellen können keine Konstruktoren definieren. -
Schnittstellen können keine Felder definieren. -
Schnittstellen können nur Instanzmember definieren. Sie können keine statischen Member definieren.
Delegaten
Hinweis
|
|---|
|
|
Hinweis
|
|---|
|
|
-
Alle für den Typ definierten Attribute. -
Den Zugriff des Typs (Sichtbarkeit). -
Den Typnamen. -
Den Basistyp des Typs. -
Alle durch den Typ implementierten Schnittstellen. -
Definitionen für jeden Member des Typs.
Attribute
Typzugriff
|
|
|
|---|---|
|
|
|
|
|
|
-
Wenn die deklarierte Zugriffsart von M den Wert public hat, entspricht die Zugriffsdomäne von M der von T. -
Wenn die deklarierte Zugriffsart von M den Wert protected internal hat, entspricht die Zugriffsdomäne von M der Schnittmenge zwischen der Zugriffsdomäne von T, dem Programmtext von P und dem Programmtext jedes Typs, der von T abgeleitet und außerhalb von P deklariert wurde. -
Wenn die deklarierte Zugriffsart von M den Wert protected hat, entspricht die Zugriffsdomäne von M der Schnittmenge zwischen der Zugriffsdomäne von T, dem Programmtext von T und jedem von T abgeleiteten Typ. -
Wenn die deklarierte Zugriffsart von M den Wert internal hat, entspricht die Zugriffsdomäne von M der Schnittmenge zwischen der Zugriffsdomäne von T und dem Programmtext von P. -
Wenn die deklarierte Zugriffsart von M den Wert private hat, entspricht die Zugriffsdomäne von M dem Programmtext von T.
Typnamen
-
Alle Namen werden als Unicode-Zeichenfolgen (16-Bit-Zeichen) codiert. -
Ein eingebetteter Wert von 0x0000 (16 Bits) ist für Namen nicht zulässig.
Basistypen und Schnittstellen
Felder
-
Konstanten, deren Wert zur Entwurfszeit zugewiesen wird. Diese sind statische Member einer Klasse, obwohl sie nicht mit dem static-Schlüsselwort (Shared in Visual Basic) definiert werden. -
Schreibgeschützte Variablen, deren Werte im Klassenkonstruktor zugewiesen werden können.
using System; public class Constants { public const double Pi = 3.1416; public readonly DateTime BirthDate; public Constants(DateTime birthDate) { this.BirthDate = birthDate; } } public class Example { public static void Main() { Constants con = new Constants(new DateTime(1974, 8, 18)); Console.Write(Constants.Pi + "\n"); Console.Write(con.BirthDate.ToString("d") + "\n"); } } // The example displays the following output if run on a system whose current // culture is en-US: // 3.1417 // 8/18/1974
Eigenschaften
Methoden
Konstruktoren
Ereignisse
Geschachtelte Typen
|
|
|
|
|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Überladen
Hinweis
|
|---|
|
|
Vererben, Überschreiben und Verdecken von Membern
-
Ein abgeleiteter Typ kann einen geerbten Member verdecken, indem er einen neuen Member mit derselben Signatur definiert. Dies kann z. B. geschehen, um einen Member, der zuvor als public deklariert war, als private zu definieren, oder um ein neues Verhalten für eine geerbte Methode zu definieren, die mit final gekennzeichnet ist. -
Ein abgeleiteter Typ kann eine geerbte virtuelle Methode überschreiben. Die überschreibende Methode stellt eine neue Definition für die Methode bereit, die basierend auf dem Werttyp zur Laufzeit aufgerufen wird und nicht basierend auf dem zur Kompilierungszeit bekannten Variablentyp. Eine virtuelle Methode kann nur von einer Methode überschrieben werden, wenn die virtuelle Methode nicht als final gekennzeichnet ist und die neue Methode mindestens dieselben Zugriffstypen unterstützt wie die virtuelle Methode.