Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Diese Klausel ist informativ.
B.1 Allgemein
Dieser Anhang sammelt einige Informationen zur Portabilität, die in dieser Spezifikation erscheint.
B.2 Nicht definiertes Verhalten
Das Verhalten ist unter folgenden Umständen nicht definiert:
- Das Verhalten der eingeschlossenen asynchronen Funktion, wenn die Implementierung der Schnittstellenmethoden
INotifyCompletion.OnCompletedeines Awaiters ausgeführt wird undICriticalNotifyCompletion.UnsafeOnCompletednicht dazu führt, dass der Wiederaufnahmedelegat höchstens einmal aufgerufen wird (§12.9.9.4). - Übergeben von Zeigern als Bezugs- oder Ausgabeparameter (§24.3).
- Beim Ableiten des Ergebnisses der Konvertierung eines Zeigertyps in einen anderen wird der resultierende Zeiger nicht ordnungsgemäß für den Zeigertyp ausgerichtet. (§24.5.1).
- Wenn der unäre
*Operator auf einen Zeiger angewendet wird, der einen ungültigen Wert enthält (§24.6.2). - Wenn ein Zeiger tiefgestellt ist, um auf ein out-of-bounds-Element zuzugreifen (§24.6.4).
- Ändern von Objekten vom verwalteten Typ durch Feste Zeiger (§24.7).
- Der Inhalt des von
stackallocneu zugewiesenen Speichers (§12.8.22). - Es wird versucht, eine negative Anzahl von Objekten mit
stackalloczuzuordnen (§12.8.22). - Implizite dynamische Konvertierungen (§10.2.10) von Eingabeparametern mit Wertargumenten (§12.6.4.2).
B.3 Implementierungsdefiniertes Verhalten
Eine konforme Implementierung ist erforderlich, um die Wahl des Verhaltens in jedem der in diesem Unterclause aufgeführten Bereiche zu dokumentieren. Im Folgenden sind implementierungsdefiniert:
- Die Behandlung des Unicode-NULL-Zeichens (U+0000) in einer Kompilierungseinheit. (§6.1)
- Das Verhalten, wenn ein Bezeichner nicht in Normalisierungsformular C gefunden wird. (§6.4.3)
- Der maximal zulässige Wert für
Decimal_Digit+inPP_Line_Indicator. (§6.5.8) - Die Auslegung der input_characters im pp_pragma-Text einer #pragma-Richtlinie. (§6.5.10)
- Die Werte aller Anwendungsparameter, die
Mainvor dem Anwendungsstart an die Hostumgebung übergeben werden. (§7.1) - Der Mechanismus zum Bestimmen, ob ein Programm als Klassenbibliothek oder als Anwendung kompiliert wird. (§7.1)
- Die Richtlinie oder Mechanismen, die von einer Implementierung für die Erstellung und Zerstörung von Anwendungsdomänen verwendet werden. (§7.1)
- Der Ausgangscode, wenn die effektive Einstiegspunktmethode aufgrund einer Ausnahme beendet wird. (§7.2)
- Gibt an, ob Finalizer als Teil der Beendigung der Anwendung ausgeführt werden. (§7.2)
- Gibt an, ob APIs zulassen, dass ein Finalizer mehrmals ausgeführt werden kann. (§7.9)
- Gibt an, ob Finalizer als Teil der Beendigung der Anwendung ausgeführt werden. (§7.9)
- Die API-Oberfläche, die über
Expression<TDelegate>die Anforderung einerCompileMethode hinaus bereitgestellt wird. (§8.6) - Die genaue Struktur der Ausdrucksstruktur sowie der genaue Prozess zum Erstellen der Struktur, wenn eine anonyme Funktion in eine Ausdrucksstruktur konvertiert wird. (§10.7.3)
- Der Grund, warum eine Konvertierung in einen kompatiblen Delegattyp zur Kompilierung fehlschlägt. (§10.7.3)
- Der Wert, der zurückgegeben wird, wenn eine Stapelzuordnung der Größe Null erfolgt. (§12.8.22)
- Ob eine
System.ArithmeticException(oder eine Unterklasse davon) ausgelöst wird oder der Überlauf nicht gemeldet wird, wobei der resultierende Wert der linke Operand ist, wenn in einemuncheckedKontext und dem linken Operanden einer ganzzahligen Division der maximale negativeintoderlongder rechte Operand ist–1. (§12.12.3) - Wenn eine
System.ArithmeticException(oder eine Unterklasse davon) ausgelöst wird, wenn ein Dezimal-Restvorgang ausgeführt wird. (§12.12.4) - Die Auswirkungen der Threadendung, wenn ein Thread keinen Handler für eine Ausnahme hat und der Thread selbst beendet wird. (§13.10.6)
- Der Mechanismus, mit dem die Verknüpfung mit einer externen Methode erreicht wird. (§15.6.8)
- Die Auswirkungen der Threadbeendigung, wenn für eine Ausnahme keine Übereinstimmungsklausel
catchgefunden wird, und der Code, der den Thread anfangs gestartet hat, erreicht wird. (§22.4). - Eine Ausführungsumgebung kann zusätzliche Attribute bereitstellen, die sich auf die Ausführung eines C#-Programms auswirken. (§23.5.1)
- Die Zuordnungen zwischen Zeigern und ganzen Zahlen. (§24.5.1)
- Die Auswirkung des Anwendens des unären
*Operators auf einennullZeiger. (§24.6.2) - Das Verhalten, wenn die Zeigerarithmetik die Domäne des Zeigertyps überläuft. (§24.6.6, §24.6.7)
- Das Ergebnis des
sizeofOperators für nicht vordefinierte Werttypen. (§24.6.9) - Das Verhalten der
fixedAnweisung, wenn der Arrayausdruck odernulldas Array null Elemente enthält. (§24.7) - Das Verhalten der
fixedAnweisung, wenn der Zeichenfolgenausdruck istnull. (§24.7)
B.4 Nicht angegebenes Verhalten
- Der Zeitpunkt, zu dem der Finalizer (falls vorhanden) für ein Objekt ausgeführt wird, sobald dieses Objekt zur Finalisierung berechtigt ist (§7.9).
- Die Darstellung von
true(§8.3.9). - Der Wert des Ergebnisses beim Konvertieren von Out-of-Range-Werten von
floatoder Werten in einen integralen Typ in einemdoubleKontext (unchecked). - Das genaue Zielobjekt und die Zielmethode des aus einem anonymous_method_expression erzeugten Delegaten enthält (§10.7.2).
- Das Layout von Arrays, außer in einem unsicheren Kontext (§12.8.17.4).
- Gibt an, ob der Block einer anonymen Funktion außer durch Auswertung und Aufruf der lambda_expression oder anonymous_method-Ausdruck (§12.21.3) ausgeführt werden kann.
- Die genaue Anzeigedauer der Initialisierung statischer Felder (§15.5.6.2).
- Das Ergebnis des Aufrufens
MoveNext, wenn ein Enumerationsobjekt ausgeführt wird (§15.15.5.2). - Das Ergebnis des Zugriffs auf
Current, wenn sich ein -Objekt in den Zuständen vorher, ausgeführt oder nachher befindet (§15.15.5.3). - Das Ergebnis des Aufrufens
Dispose, wenn sich ein Enumerationsobjekt im ausführungszustand befindet (§15.15.5.4). - Die Attribute eines typs, der in mehreren Teilen deklariert ist, werden durch die Kombination der Attribute der einzelnen Teile (§23.3) bestimmt.
- Die Reihenfolge, in der Mitglieder in eine Struktur verpackt werden (§24.6.9).
- Eine Ausnahme tritt während der Finalizerausführung auf, und diese Ausnahme wird nicht abgefangen (§22.4).
- Wenn mehrere Member übereinstimmen, ist dieses Mitglied die Implementierung von
I.M(§19.6.5).
B.5 Weitere Probleme
- Die genauen Ergebnisse der Gleitkommaauswertung können von einer Implementierung zu einer anderen variieren, da eine Implementierung solche Ausdrücke mit einem größeren Bereich und/oder einer höheren Genauigkeit bewerten darf als erforderlich (§8.3.7).
- Bestimmte Signaturen sind für die Kompatibilität mit anderen Programmiersprachen (§15.3.10) reserviert.
Ende des informativen Texts.
ECMA C# draft specification