Anforderungen an Konstantendeklarationen in C# (Anforderungen an Konstantendeklarationen in C#), Lektion, Seite 723825
https://www.purl.org/stefan_ram/pub/anforderungen_konstantendeklarationen_csharp (Permalink) ist die kanonische URI dieser Seite.
Stefan Ram
C#-Kurs

Anforderungen an Konstantendeklarationen in C♯ 

Anforderungen an den Typ

Der Typ  eines zur Initialisierung einer Konstanten verwendete Initialisierungsausdrucks muß implizit in den Typ der Konstanten konvertierbar sein (so wie der Typ eines Arguments  implizit in den Typ des dazugehörigen Parameters  konvertierbar sein muß).

Dies erlaubt es, einen int-Ausdruck zur Initialisierung einer double-Konstanten zu verwenden.

Das folgende Programmbeispiel zeigt, wie von solchen Umwandlungen Gebrauch gemacht wird: Ein Literal vom Datentyp »int« wird zur Initialisierung einer Konstanten vom Typ »double« verwendet.

Program.cs

public static class Program
{ public static void Main()
{

const double d = 300;
global::System.Console.WriteLine( d ); }}

Protokoll
300

Das folgende Beispiel zeigt, daß ein Versuch zur Initialisierung einer int-Konstanten mit einem double -Literal scheitert, weil hier Nachkommastellen verloren gehen würden (selbst wenn sie alle gleich 0 sind).

Program.cs

public static class Program
{ public static void Main()
{

const int i = 300.0;
global::System.Console.WriteLine( i ); }}

Protokoll
Program.cs(5,19): error CS0266: Cannot implicitly convert type 'double' to 'int'.

Aus Sicht der Sprachspezifikation besteht der Grund für den Fehler darin, daß es laut Sprachspezifikation keine implizite Wandlung von »double« nach »int« gibt.

Von den bisher behandelten Typen ist jeder Typ implizit in sich selbst wandelbar, und der Typ »int« ist nach »double« oder »decimal« wandelbar. Andere Wandlungsmöglichkeiten existieren bei diesen Typen nicht.

Tabelle

Konstantentyp Typ des Initialisierungsausdrucks

double double, int
decimal decimal, int
int int

string string

Substitutionsregel Wird ein Ausdruck eines Typs (wie beispielsweise »double«) erwartet, so kann ein Ausdruck eines Typs  (wie beispielsweise »int«) angegeben werden, von dem es eine implizite Wandlung in den erwarteten Typ gibt.

Allgemein muß beim Kopieren eines Wertes der Typ des Ausdrucks, der die Quelle  des Wert angibt, implizit  in den Typ des Ausdrucks, der das Ziel  des Kopierens angibt, wandelbar  sein. Als Spezialfälle dieser Regel ergeben sich:

Anforderungen an die Zeit  der Auswertung

Der Wert des Initialisierungsausdrucks einer Konstanten muß bereits während der Übersetzung  bekannt sind.

Zur Übersetzungszeit bekannt sind die Werte von Literalen  und von Operatorausdrücken  mit den bisher behandelten Typen und Operatoren. Die Werte der verwendeten Operanden müssen selber zur Übersetzungszeit bekannt sein.

Durch diese Anforderung werden insbesondere Aufrufe  innerhalb von Initialisierungsausdrücken für Konstanten ausgeschlossen.

Seiteninformationen und Impressum   |   Mitteilungsformular  |   "ram@zedat.fu-berlin.de" (ohne die Anführungszeichen) ist die Netzpostadresse von Stefan Ram.   |   Eine Verbindung zur Stefan-Ram-Startseite befindet sich oben auf dieser Seite hinter dem Text "Stefan Ram".)  |   Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram. Schlüsselwörter zu dieser Seite/relevant keywords describing this page: Stefan Ram Berlin slrprd slrprd stefanramberlin spellched stefanram723825 stefan_ram:723825 Anforderungen an Konstantendeklarationen in C# Stefan Ram, Berlin, and, or, near, uni, online, slrprd, slrprdqxx, slrprddoc, slrprd723825, slrprddef723825, PbclevtugFgrsnaEnz Erklärung, Beschreibung, Info, Information, Hinweis,

Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram.
https://www.purl.org/stefan_ram/pub/anforderungen_konstantendeklarationen_csharp