B. melléklet hordozhatósági problémái

Ez a záradék informatív.

B.1 Általános

Ez a melléklet összegyűjt néhány információt a jelen specifikációban szereplő hordozhatóságról.

B.2 Nem definiált viselkedés

A viselkedés a következő körülmények között nincs meghatározva:

  1. A csatoló aszinkron függvény viselkedése, amikor egy váró implementálja a felületi metódusokat INotifyCompletion.OnCompleted , és ICriticalNotifyCompletion.UnsafeOnCompleted nem eredményezi az újrakezdési delegált meghívását legfeljebb egyszer (12.9.9.4. §).
  2. Mutatók átadása paraméterekként vagy out paraméterekként ref (24.3.2. §).
  3. Ha elhalasztja az egyik mutatótípus egy másikra való konvertálásának eredményét, és az eredményül kapott mutató nincs megfelelően igazítva a hegyes típushoz. (24.5.1. §).
  4. Ha a unary * operátor érvénytelen értéket tartalmazó mutatóra van alkalmazva (24.6.2. §).
  5. Ha egy mutató alsó indexben van egy határtalan elem eléréséhez (24.6.4.§).
  6. Az funcptr_typeértékeinek vagy void* másolatainak összehasonlítása során (24.6.8. §).
  7. Felügyelt típusú objektumok módosítása rögzített mutatókkal (24.7.§).
  8. Az újonnan lefoglalt stackalloc memória tartalma (12.8.22. §).
  9. Negatív számú elem kiosztásának kísérlete (stackalloc(12.8.22.§)).
  10. Bemeneti paraméterek implicit dinamikus konvertálása (§10.2.10) értékargumentumokkal (12.6.4.2. §).

B.3 Implementáció által definiált viselkedés

A megfelelő megvalósítás szükséges ahhoz, hogy dokumentálja a viselkedését az alklarációban felsorolt összes területen. A megvalósítás a következő:

  1. A Unicode NULL karakter (U+0000) kezelése fordítási egységben. (6.1. §)
  2. A C normalizálási űrlapon nem szereplő azonosítók viselkedése. (6.4.3. §)
  3. A maximális megengedett érték a Decimal_Digit+ következőben: PP_Line_Indicator. (6.5.8. §)
  4. A input_characters értelmezése egy #pragma irányelv pp_pragma szövegében. (6.5.10. §)
  5. A gazdakörnyezet által az alkalmazás indítása előtt átadott Main alkalmazásparaméterek értékei. (7.1. §)
  6. Annak meghatározására szolgáló mechanizmus, hogy egy program osztálytárként vagy alkalmazásként van-e lefordítva. (7.1. §)
  7. Az alkalmazástartományok létrehozására és megsemmisítésére szolgáló implementáció által használt szabályzatok vagy mechanizmusok. (7.1. §)
  8. A kilépési kód, ha a tényleges belépési pont metódus kivétel miatt leáll. (7.2. §)
  9. Azt jelzi, hogy a véglegesítők az alkalmazás leállítása részeként futnak-e. (7.2. §, 7.9. §)
  10. Azt jelzi, hogy az API-k lehetővé teszik-e a véglegesítő többszöri futtatását. (7.9. §)
  11. A típusok nintnuintés a . (8.3.6. §)
  12. A metódusra Expression<TDelegate> vonatkozó követelményen túli Compile API-felület. (8.6. §)
  13. A kifejezésfa pontos struktúrája, valamint a létrehozás pontos folyamata, amikor egy névtelen függvény kifejezésfává alakul. (10.7.3. §)
  14. A kompatibilis meghatalmazotti típusra való konvertálás oka fordításkor meghiúsulhat. (10.7.3. §)
  15. A nulla méretű verem lefoglalásakor visszaadott érték. (12.8.22. §)
  16. System.ArithmeticException Az eredményül kapott érték a bal operandus értéke, amikor egy unchecked kontextusban az egész osztás bal operandusa a maximális negatív int vagy long az érték, a jobb operandus –1pedig . (12.13.3. §)
  17. Ha egy System.ArithmeticException tizedestört maradékművelet végrehajtásakor egy (vagy annak alosztályát) dobják ki. (12.13.4. §)
  18. A tulajdonságkészlet kiegészítő aláírásának megkülönböztetésére szolgáló mechanizmus az init tartozékétól (15.3.10.2. §).
  19. Az indexelő készlet kiegészítő aláírásának az init tartozéktól való megkülönböztetésének mechanizmusa (15.3.10.4. §).
  20. A szálleállítás hatása, ha egy szál nem rendelkezik kivételkezelővel, és maga a szál leáll. (13.10.6. §)
  21. Az a mechanizmus, amellyel egy külső módszerhez kapcsolódik. (15.6.8. §)
  22. A szálmegszüntetés hatása, ha egy kivételhez nem található egyező catch záradék, és a szálat eredetileg elindító kód el lesz érve. (22.4. §).
  23. A nem felügyelt hívási konvenciók jogkivonatnév-leképezése és szemantikája a jelen specifikációban előírtakon túl, valamint a jogkivonatok érvényes kombinációinak készlete (24.3.3.3. §).
  24. A modul inicializálóinak végrehajtási sorrendje egy modulban (23.5.9. §).
  25. A végrehajtási környezetek további attribútumokat is biztosíthatnak, amelyek befolyásolják a C#-programok végrehajtását. (23.5.1. §)
  26. A mutatók és az egész számok közötti leképezések. (24.5.1. §)
  27. A unary * operátor mutatóra való null alkalmazásának hatása. (24.6.2. §)
  28. A kivétel típusa, ha egy invocation_expression primary_expression egy értékekkel nullrendelkező függvénymutató, és megkísérli meghívni a (nem létező) hegyes metódust (12.8.10. §).
  29. Az a viselkedés, amikor a mutató aritmetikai túlcsordul a mutatótípus tartományán. (24.6.6. §, 24.6.7. §)
  30. A nem előre definiált értéktípusok operátorának sizeof eredménye. (24.6.9. §)
  31. Az utasítás viselkedése fixed , ha a tömbkifejezés vagy null a tömb nulla elemből áll. (24.7. §)
  32. Az utasítás viselkedésefixed, ha a sztringkifejezés .null (24.7. §)
  33. A nulla méretű verem lefoglalásakor visszaadott érték (12.8.22. §).

B.4 Meghatározatlan viselkedés

  1. A legfelső szintű utasításokat tartalmazó belépésipont-metódus neve (7.1.3. §).
  2. Az objektum véglegesítőjének (ha van ilyen) futtatása, amint az objektum jogosulttá válik a véglegesítésre (7.9.§).
  3. A reprezentáció true (8.3.9. §).
  4. Az eredmény értéke a tartományon kívüli értékek floatdouble környezetbeli integráltípussá unchecked alakításakor (10.3.2. §).
  5. Az anonymous_method_expression előállított delegált pontos célobjektuma és célmetódusa tartalmazza (10.7.2. §).
  6. A tömbök elrendezése, kivéve a nem biztonságos környezeteket (12.8.17.5. §).
  7. Függetlenül attól, hogy van-e mód egy névtelen függvény blokkjának végrehajtására, kivéve a lambda_expression vagy anonymous_method kifejezés kiértékelését és meghívását (12.22.3. §).
  8. A statikus mező inicializálásának pontos időzítése (15.5.6.2. §).
  9. Az enumerátorobjektum futtatásakor történő meghívás MoveNext eredménye (15.15.5.2. §).
  10. A Current hozzáférés eredménye, ha egy enumerátor objektum az előtét, a futási vagy az utáni állapotban van (15.15.5.3. §).
  11. Az Dispose meghívásának eredménye, amikor az enumerátor objektum futási állapotban van (15.15.5.4. §).
  12. A többrészesen deklarált típus attribútumait úgy határozzuk meg, hogy meghatározatlan sorrendben egyesítjük az egyes részek attribútumait (23.3. §).
  13. Az a sorrend, amelyben a tagok egy szerkezetbe vannak csomagolva (24.6.9. §).
  14. Kivétel történik a véglegesítő végrehajtása során, és ez a kivétel nem jelenik meg (22.4. §).
  15. Ha egynél több tag egyezik, akkor melyik tag a végrehajtásuk I.M (19.6.5. §).

B.5 Egyéb problémák

  1. A lebegőpontos kifejezéskiértékelés pontos eredményei implementációnként eltérőek lehetnek, mivel egy implementáció a szükségesnél nagyobb tartományt és/vagy pontosságot használva értékelheti ki ezeket a kifejezéseket (8.3.7. §).
  2. Bizonyos aláírások más programozási nyelvekkel való kompatibilitás céljából vannak fenntartva (15.3.10. §).

Az informatív szöveg vége.