Problemen met betrekking tot portabiliteit in bijlage B
Deze component is informatief.
B.1 Algemeen
In deze bijlage wordt informatie verzameld over de draagbaarheid die in deze specificatie wordt weergegeven.
B.2 Niet-gedefinieerd gedrag
Het gedrag is niet gedefinieerd in de volgende omstandigheden:
- Het gedrag van de ingesloten asynchrone functie wanneer de implementatie van de interfacemethoden
INotifyCompletion.OnCompleted
door een wachter wordt uitgevoerd enICriticalNotifyCompletion.UnsafeOnCompleted
zorgt er niet voor dat de gemachtigde voor hervatting maximaal één keer wordt aangeroepen (§12.9.8.4). - Aanwijzers doorgeven als referentie- of uitvoerparameters (§23.3).
- Wanneer u het resultaat van het converteren van een aanwijzer naar het andere converteert en de resulterende aanwijzer niet juist is uitgelijnd voor het punt-naar-type. (§23.5.1).
- Wanneer de unaire
*
operator wordt toegepast op een aanwijzer met een ongeldige waarde (§23.6.2). - Wanneer een aanwijzer wordt subscripted om toegang te krijgen tot een element buiten de grenzen (§23.6.4).
- Objecten van het beheerde type wijzigen via vaste aanwijzers (§23.7).
- De inhoud van het geheugen dat nieuw is toegewezen door
stackalloc
(§12.8.21). - Een negatief aantal items toewijzen met behulp
stackalloc
van (§12.8.21). - Impliciete dynamische conversies (§10.2.10) van invoerparameters met waardeargumenten (§12.6.4.2).
Door implementatie gedefinieerd gedrag B.3
Een conforme implementatie is vereist om de keuze van het gedrag te documenteren in elk van de gebieden die in deze subclause worden vermeld. De volgende zijn gedefinieerd door de implementatie:
- De verwerking van het Unicode NULL-teken (U+0000) in een compilatie-eenheid. (§6.1)
- Het gedrag wanneer er geen id in Normalisatieformulier C wordt aangetroffen. (§6.4.3)
- De maximumwaarde die is toegestaan in
Decimal_Digit+
PP_Line_Indicator
. (§6.5.8) - De interpretatie van de input_characters in de pp_pragma tekst van een #pragma richtlijn. (§6.5.10)
- De waarden van toepassingsparameters die worden doorgegeven
Main
door de hostomgeving vóór het opstarten van de toepassing. (§7.1) - Het mechanisme voor het bepalen of een programma wordt gecompileerd als een klassebibliotheek of als een toepassing. (§7.1)
- Het beleid of de mechanismen die worden gebruikt door een implementatie voor het maken en vernietigen van toepassingsdomeinen. (§7.1)
- De afsluitcode als de effectieve ingangspuntmethode wordt beëindigd vanwege een uitzondering. (§7.2)
- Of finalizers al dan niet worden uitgevoerd als onderdeel van het beëindigen van de toepassing. (§7.2)
- Of API's toestaan dat een finalizer meer dan één keer wordt uitgevoerd. (§7.9)
- Of finalizers al dan niet worden uitgevoerd als onderdeel van het beëindigen van de toepassing. (§7.9)
- Het API-oppervlak dat wordt geleverd door
Expression<TDelegate>
buiten de vereiste voor eenCompile
methode. (§8.6) - De exacte structuur van de expressiestructuur, evenals het exacte proces voor het maken ervan, wanneer een anonieme functie wordt geconverteerd naar een expressiestructuur. (§10.7.3)
- De reden waarom een conversie naar een compatibel gemachtigdetype kan mislukken tijdens het compileren. (§10.7.3)
- De waarde die wordt geretourneerd wanneer een stacktoewijzing van grootte nul wordt gemaakt. (§12.8.21)
- Of een
System.ArithmeticException
(of subklasse daarvan) wordt gegenereerd of dat de overloop niet wordt gerapporteerd met de resulterende waarde die van de linkeroperand is, wanneer in eenunchecked
context en de linkeroperand van een gehele getalverdeling de maximale negatieveint
waarde oflong
waarde is en de rechteroperand is–1
. (§12.10.3) - Wanneer een
System.ArithmeticException
(of subklasse daarvan) wordt gegenereerd bij het uitvoeren van een decimale restbewerking. (§12.10.4) - De impact van threadbeëindiging wanneer een thread geen handler heeft voor een uitzondering en de thread zelf wordt beëindigd. (§13.10.6)
- Het mechanisme waarmee koppeling naar een externe methode wordt bereikt. (§15.6.8)
- De impact van threadbeëindiging wanneer er geen overeenkomende
catch
component wordt gevonden voor een uitzondering en de code die in eerste instantie met die thread is gestart, wordt bereikt. (§21.4). - Een uitvoeringsomgeving kan aanvullende kenmerken bieden die van invloed zijn op de uitvoering van een C#-programma. (§22.5.1)
- De toewijzingen tussen aanwijzers en gehele getallen. (§23.5.1)
- Het effect van het toepassen van de unaire
*
operator op eennull
aanwijzer. (§23.6.2) - Het gedrag wanneer de rekenkundige aanwijzer het domein van het type aanwijzer overloopt. (§23.6.6, §23.6.7)
- Het resultaat van de
sizeof
operator voor niet-vooraf gedefinieerde waardetypen. (§23.6.9) - Het gedrag van de
fixed
instructie als de matrixexpressie isnull
of als de matrix nul elementen heeft. (§23.7) - Het gedrag van de
fixed
instructie als de tekenreeksexpressie isnull
. (§23.7)
B.4 Niet-gespecificeerd gedrag
- Het tijdstip waarop de finalizer (indien aanwezig) voor een object wordt uitgevoerd, zodra dat object in aanmerking komt voor voltooien (§7.9).
- De weergave van
true
(§8.3.9). - De waarde van het resultaat bij het converteren van buiten-bereikwaarden van
float
of waarden naar een integraal type in eenunchecked
context (§10.3.2double
). - Het exacte doelobject en de doelmethode van de gemachtigde die is geproduceerd op basis van een anonymous_method_expression bevat (§10.7.2).
- De indeling van matrices, behalve in een onveilige context (§12.8.16.5).
- Of er een manier is om het blok van een andere anonieme functie uit te voeren dan door middel van evaluatie en aanroep van de lambda_expression of anonymous_method-expressie (§12.19.3).
- De exacte timing van de initialisatie van statische velden (§15.5.6.2).
- Het resultaat van aanroepen
MoveNext
wanneer een enumerator-object wordt uitgevoerd (§15.14.5.2). - Het resultaat van toegang wanneer een enumerator-object zich in de voor- of nastatussen
Current
bevindt (§15.14.5.3). - Het resultaat van aanroepen
Dispose
wanneer een enumeratorobject de status Actief heeft (§15.14.5.4). - De kenmerken van een type dat in meerdere delen is gedeclareerd, worden bepaald door de kenmerken van elk van de onderdelen te combineren (§22.3).
- De volgorde waarin leden zijn verpakt in een struct (§23.6.9).
- Er treedt een uitzondering op tijdens de uitvoering van de finalizer en deze uitzondering wordt niet opgevangen (§21.4).
- Als er meer dan één lid overeenkomt, is dit lid de implementatie van
I.M
(§18.6.5).
B.5 Andere problemen
- De exacte resultaten van drijvendekommage-expressie-evaluatie kunnen variëren van de ene implementatie naar de andere, omdat een implementatie dergelijke expressies mag evalueren met een groter bereik en/of precisie dan vereist is (§8.3.7).
- De CLI behoudt bepaalde handtekeningen voor compatibiliteit met andere programmeertalen (§15.3.10).
Einde van informatieve tekst.
Met ons samenwerken op GitHub
De bron voor deze inhoud vindt u op GitHub, waar u ook problemen en pull-aanvragen kunt maken en controleren. Bekijk onze gids voor inzenders voor meer informatie.
ECMA C# draft specification