Problémy s přenositelností přílohy B
Tato klauzule je informativní.
B.1 Obecné
Tato příloha shromažďuje některé informace o přenositelnosti, které jsou uvedeny v této specifikaci.
B.2 Nedefinované chování
Chování není definováno za následujících okolností:
- Chování ohraničující asynchronní funkce při implementaci metod
INotifyCompletion.OnCompleted
rozhraní awaiterem aICriticalNotifyCompletion.UnsafeOnCompleted
nezpůsobí vyvolání delegáta obnovení najednou (§12.9.8.4). - Předávání ukazatelů jako referenčních nebo výstupních parametrů (§23.3).
- Při dereferencování výsledku převodu jednoho typu ukazatele na jiný a výsledný ukazatel není správně zarovnaný pro typ s odkazem na typ. (§23.5.1).
- Pokud je unární
*
operátor použit na ukazatel obsahující neplatnou hodnotu (§23.6.2). - Pokud je ukazatel dolní index pro přístup k prvku mimo hranice (§23.6.4).
- Úprava objektů spravovaného typu pomocí pevných ukazatelů (§23.7).
- Obsah paměti nově přidělený
stackalloc
(§12.8.21). - Pokus o přidělení záporného počtu položek pomocí
stackalloc
§12.8.21). - Implicitní dynamické převody (§10.2.10) vstupních parametrů s argumenty hodnoty (§12.6.4.2).
B.3 Chování definované implementací
Ke zdokumentování volby chování v každé z oblastí uvedených v této dílčí části se vyžaduje odpovídající implementace. Následující definice je definována implementací:
- Zpracování znaku Unicode NULL (U+0000) v kompilační jednotce. (§6.1)
- Chování, pokud je zjištěn identifikátor, který není v normalizačním formuláři C. (§6.4.3)
- Maximální hodnota povolená pro
Decimal_Digit+
hodnotu inPP_Line_Indicator
. (§6.5.8) - Interpretace input_characters v pp_pragma textu direktivy #pragma. (§6.5.10)
- Hodnoty všech parametrů aplikace předané
Main
hostitelským prostředím před spuštěním aplikace. (§7.1) - Mechanismus pro určení, zda je program zkompilován jako knihovna tříd nebo jako aplikace. (§7.1)
- Zásady nebo mechanismy používané implementací pro vytváření a zničení domén aplikací. (§7.1)
- Ukončovací kód, pokud efektivní metoda vstupního bodu skončí kvůli výjimce. (§7.2)
- Zda jsou finalizátory spuštěny jako součást ukončení aplikace. (§7.2)
- Určuje, jestli rozhraní API umožňují více než jednou spustit finalizační metodu. (§7.9)
- Zda jsou finalizátory spuštěny jako součást ukončení aplikace. (§7.9)
- Povrch rozhraní API poskytovaný
Expression<TDelegate>
nad rámec požadavku na metoduCompile
. (§8.6) - Přesná struktura stromu výrazů a přesný proces jeho vytvoření při převodu anonymní funkce na strom výrazu. (§10.7.3)
- Důvod převodu na kompatibilní typ delegáta může v době kompilace selhat. (§10.7.3)
- Hodnota vrácená při přidělení velikosti zásobníku nula je provedena. (§12.8.21)
System.ArithmeticException
Zda je vyvolána (nebo podtřída) nebo přetečení se nepřetečení nevysestavuje s výslednou hodnotou, která je výsledkem levého operandu, pokud vunchecked
kontextu a levém operandu celočíselného dělení je maximální zápornáint
hodnota nebolong
hodnota a pravý operand je–1
. (§12.10.3)System.ArithmeticException
Když je vyvolán (nebo podtřída) při provádění desetinné operace zbytek. (§12.10.4)- Dopad ukončení vlákna, pokud vlákno nemá žádnou obslužnou rutinu pro výjimku a vlákno je samo ukončeno. (§13.10.6)
- Mechanismus, kterým je dosaženo propojení s externí metodou. (§15.6.8)
- Dopad ukončení vlákna, pokud nebyla nalezena žádná odpovídající
catch
klauzule pro výjimku a kód, který původně spustil toto vlákno, je dosaženo. (§21.4). - Spouštěcí prostředí může poskytovat další atributy, které ovlivňují provádění programu jazyka C#. (§22.5.1)
- Mapování mezi ukazateli a celými čísly. (§23.5.1)
- Účinek použití unárního
*
operátorunull
na ukazatel. (§23.6.2) - Chování při aritmetické přetečení ukazatele domény typu ukazatele. (§23.6.6, §23.6.7)
- Výsledek operátoru
sizeof
pro nedefinované typy hodnot. (§23.6.9) - Chování
fixed
příkazu, pokud jenull
maticový výraz nebo pokud má matice nula prvků. (§23.7) - Chování
fixed
příkazu, pokud jenull
řetězcový výraz . (§23.7)
B.4 Nespecifikované chování
- Čas spuštění finalizátoru (pokud existuje) objektu, jakmile se tento objekt stane způsobilým k dokončení (§7.9).
- Vyjádření
true
(§8.3.9). - Hodnota výsledku při převodu hodnot mimo rozsah nebo
float
double
hodnot na celočíselný typ vunchecked
kontextu (§10.3.2). - Přesný cílový objekt a cílová metoda delegáta vytvořeného z anonymous_method_expression obsahuje (§10.7.2).
- Rozložení polí s výjimkou nebezpečného kontextu (§12.8.16.5).
- Zda existuje nějaký způsob, jak provést blok anonymní funkce jiné než prostřednictvím vyhodnocení a vyvolání lambda_expression nebo anonymous_method-výraz (§12.19.3).
- Přesné načasování inicializace statického pole (§15.5.6.2).
- Výsledek vyvolání
MoveNext
při spuštění objektu výčtu (§15.14.5.2). - Výsledek přístupu k
Current
objektu enumerátoru je v před, spuštěném nebo po stavu (§15.14.5.3). - Výsledek vyvolání
Dispose
objektu výčtu je ve spuštěném stavu (§15.14.5.4). - Atributy typu deklarované ve více částech jsou určeny kombinováním atributů jednotlivých částí v nezadaném pořadí (§22.3).
- Pořadí, ve kterém jsou členové zabaleni do struktury (§23.6.9).
- Při provádění finalizátoru dojde k výjimce a tato výjimka se nezachytí (§21.4).
- Pokud se shoduje více než jeden člen, který člen je provedením
I.M
(§18.6.5).
B.5 Další problémy
- Přesné výsledky vyhodnocení výrazu s plovoucí desetinnou čárkou se mohou lišit od jedné implementace po druhé, protože implementace je povolena k vyhodnocení těchto výrazů pomocí většího rozsahu a/nebo přesnosti, než je vyžadováno (§8.3.7).
- Rozhraní příkazového řádku si vyhrazuje určité podpisy pro kompatibilitu s jinými programovacími jazyky (§15.3.10).
Konec informativního textu
Spolupracujte s námi na GitHubu
Zdroj tohoto obsahu najdete na GitHubu, kde můžete také vytvářet a kontrolovat problémy a žádosti o přijetí změn. Další informace najdete v našem průvodci pro přispěvatele.
ECMA C# draft specification