Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Den här satsen är informativ.
B.1 Allmänt
Denna bilaga samlar in viss information om portabilitet som förekommer i denna specifikation.
B.2 Odefinierat beteende
Beteendet är odefinierat under följande omständigheter:
- Beteendet för den omslutande asynkrona funktionen när en inväntare implementerar gränssnittsmetoderna INotifyCompletion.OnCompletedochICriticalNotifyCompletion.UnsafeOnCompletedinte gör att återtagandedelegaten anropas högst en gång (§12.9.9.4).
- Skicka pekare som referens- eller utdataparametrar (§24.3).
- När du avrefererar resultatet av att konvertera en pekartyp till en annan och den resulterande pekaren inte är korrekt justerad för den spetsiga typen. (§24.5.1).
- När den unary *operatorn tillämpas på en pekare som innehåller ett ogiltigt värde (§24.6.2).
- När en pekare är nedsänkt för att komma åt ett out-of-bounds-element (§24.6.4).
- Ändra objekt av hanterad typ via fasta pekare (§24.7).
- Innehållet i det minne som nyligen allokerats av stackalloc(§12.8.22).
- Försöker allokera ett negativt antal objekt enligt (stackalloc).
- Implicita dynamiska konverteringar (§10.2.10) av indataparametrar med värdeargument (§12.6.4.2).
B.3 Implementeringsdefinierat beteende
En implementering som överensstämmer krävs för att dokumentera dess beteendeval i vart och ett av de områden som anges i den här underklienten. Följande är implementeringsdefinierade:
- Hanteringen av Unicode NULL-tecknet (U+0000) i en kompileringsenhet. (§6.1)
- Beteendet när en identifierare som inte finns i normaliseringsformulär C påträffas. (§6.4.3)
- Det maximala värdet som tillåts för Decimal_Digit+iPP_Line_Indicator. (§6.5.8)
- Tolkningen av input_characters i pp_pragma-texten i ett #pragma direktiv. (§6.5.10)
- Värdena för alla programparametrar som skickas till Mainav värdmiljön innan programmet startas. (§7.1)
- Mekanismen för att avgöra om ett program kompileras som ett klassbibliotek eller som ett program. (§7.1)
- Den princip eller de mekanismer som används av en implementering för att skapa och förstöra programdomäner. (§7.1)
- Slutkoden om den effektiva startpunktsmetoden avslutas på grund av ett undantag. (§7.2)
- Om slutförare körs som en del av programavslut. (§7.2)
- Om API:er tillåter att en finalator körs mer än en gång. (§7.9)
- Om slutförare körs som en del av programavslut. (§7.9)
- API-ytan som tillhandahålls av Expression<TDelegate>utöver kravet på enCompilemetod. (§8.6)
- Den exakta strukturen för uttrycksträdet, samt den exakta processen för att skapa det, när en anonym funktion konverteras till ett uttrycksträd. (§10.7.3)
- Anledningen till att en konvertering till en kompatibel ombudstyp kan misslyckas vid kompilering. (§10.7.3)
- Värdet som returneras när en stackallokering av storlek noll görs. (§12.8.22)
- Om en System.ArithmeticException(eller en underklass därav) genereras eller om spillet inte rapporteras med det resulterande värdet som den vänstra operandens, när i ettuncheckedsammanhang och den vänstra operanden för en heltalsdivision är det maximala negativaintvärdet ellerlongvärdet och den högra operanden är–1. (§12.11.3)
- När en System.ArithmeticException(eller en underklass därav) genereras när en decimal reståtgärd utförs. (§12.11.4)
- Effekten av trådavslut när en tråd inte har någon hanterare för ett undantag och tråden avslutas. (§13.10.6)
- Den mekanism genom vilken länkning till en extern metod uppnås. (§15.6.8)
- Effekten av trådavslutning när ingen matchande catchsats hittas för ett undantag och koden som ursprungligen startade tråden nås. (§22.4).
- En körningsmiljö kan ge ytterligare attribut som påverkar körningen av ett C#-program. (§23.5.1)
- Mappningarna mellan pekare och heltal. (§24.5.1)
- Effekten av att tillämpa den unary *operatorn på ennullpekare. (§24.6.2)
- Beteendet när pekarens aritmetiska spiller över domänen för pekartypen. (§24.6.6, §24.6.7)
- Resultatet av operatorn sizeofför icke-fördefinierade värdetyper. (§24.6.9)
- Beteendet för -instruktionen fixedom matrisuttrycket ärnulleller om matrisen har noll element. (§24.7)
- Beteendet för -instruktionen fixedom stränguttrycket ärnull. (§24.7)
B.4 Ospecificerat beteende
- Den tid då slutföraren (om någon) för ett objekt körs, när objektet har blivit berättigat till slutförande (§7.9).
- Framställningen av true(§8.3.9).
- Resultatets värde vid konvertering av värden från floateller värden till en integrerad typ i endoublekontext (unchecked).
- Det exakta målobjektet och målmetoden för ombudet som produceras från en anonymous_method_expression innehåller (§10.7.2).
- Matrisernas layout, utom i ett osäkert sammanhang (§12.8.17.4).
- Om det finns något sätt att köra blocket för en anonym funktion annat än genom utvärdering och anrop av lambda_expression eller anonymous_method-uttryck (§12.20.3).
- Den exakta tidpunkten för initiering av statiska fält (§15.5.6.2).
- Resultatet av att MoveNextanropa när ett uppräkningsobjekt körs (§15.15.5.2).
- Resultatet av att komma åt Currentnär ett uppräkningsobjekt finns i före-, körnings- eller eftertillstånden (§15.15.5.3).
- Resultatet av att Disposeanropa när ett uppräkningsobjekt är i körningstillstånd (§15.15.5.4).
- Attributen för en typ som deklareras i flera delar bestäms genom att i en ospecificerad ordning kombinera attributen för var och en av dess delar (§23.3).
- Ordningen där medlemmarna packas i en struct (§24.6.9).
- Ett undantag inträffar under slutförandekörningen och undantaget fångas inte (§22.4).
- Om fler än en medlem matchar, vilken medlem är implementeringen av I.M(§19.6.5).
B.5 Andra problem
- De exakta resultaten av utvärderingen av flyttalsuttryck kan variera från en implementering till en annan, eftersom en implementering tillåts utvärdera sådana uttryck med ett större intervall och/eller precision än vad som krävs (§8.3.7).
- Vissa signaturer är reserverade för kompatibilitet med andra programmeringsspråk (§15.3.10).
Slut på informativ text.
ECMA C# draft specification