Problemy z przenośnością załącznika B
Ta klauzula jest informacyjna.
B.1 Ogólne
Ten załącznik zbiera pewne informacje o przenośności, które pojawiają się w tej specyfikacji.
Zachowanie niezdefiniowane B.2
Zachowanie jest niezdefiniowane w następujących okolicznościach:
- Zachowanie otaczającej funkcji asynchronicznych, gdy implementacja metod
INotifyCompletion.OnCompleted
ICriticalNotifyCompletion.UnsafeOnCompleted
interfejsu przez obiekt awaiter nie powoduje wywołania delegata wznowienia co najwyżej raz (§12.9.8.4). - Przekazywanie wskaźników jako parametrów referencyjnych lub wyjściowych (§23.3).
- Gdy wyłuszczenie wyniku konwersji jednego typu wskaźnika na inny, a wynikowy wskaźnik nie jest poprawnie wyrównany dla typu wskazywanego. (§23.5.1).
- Gdy operator jednoargumentowy
*
jest stosowany do wskaźnika zawierającego nieprawidłową wartość (§23.6.2). - Gdy wskaźnik jest indeksowany w celu uzyskania dostępu do elementu poza granicami (§23.6.4).
- Modyfikowanie obiektów typu zarządzanego za pomocą stałych wskaźników (§23.7).
- Zawartość pamięci przydzielonej
stackalloc
przez program (§12.8.21). - Próba przydzielenia ujemnej liczby elementów przy użyciu
stackalloc
(§12.8.21). - Niejawne konwersje dynamiczne (§10.2.10) parametrów wejściowych z argumentami wartości (§12.6.4.2).
Zachowanie zdefiniowane przez implementację B.3
Implementacja zgodna jest wymagana do udokumentowania wybranego zachowania w każdym z obszarów wymienionych w tej podklasie. Poniżej przedstawiono definicję implementacji:
- Obsługa znaku NULL Unicode (U+0000) w lekcji kompilacji. (§6.1)
- Zachowanie, gdy napotkano identyfikator, który nie znajduje się w formularzu normalizacji C. (§6.4.3)
- Maksymalna wartość dozwolona dla
Decimal_Digit+
elementu w plikuPP_Line_Indicator
. (§6.5.8) - Interpretacja input_characters w tekście pp_pragma dyrektywy #pragma. (§6.5.10)
- Wartości wszystkich parametrów aplikacji przekazywanych
Main
przez środowisko hosta przed uruchomieniem aplikacji. (§7.1) - Mechanizm określania, czy program jest kompilowany jako biblioteka klas, czy jako aplikacja. (§7.1)
- Zasady lub mechanizmy używane przez implementację do tworzenia i niszczenia domen aplikacji. (§7.1)
- Kod zakończenia, jeśli efektywna metoda punktu wejścia kończy się z powodu wyjątku. (§7.2)
- Określa, czy finalizatory są uruchamiane w ramach kończenia działania aplikacji. (§7.2)
- Czy interfejsy API umożliwiają uruchamianie finalizatora więcej niż raz. (§7.9)
- Określa, czy finalizatory są uruchamiane w ramach kończenia działania aplikacji. (§7.9)
- Powierzchnia interfejsu API zapewniana poza
Expression<TDelegate>
wymaganiemCompile
dla metody. (§8.6) - Dokładna struktura drzewa wyrażeń, a także dokładny proces jego tworzenia, gdy funkcja anonimowa jest konwertowana na drzewo wyrażeń. (§10.7.3)
- Przyczyna, dla którego konwersja na zgodny typ delegata może zakończyć się niepowodzeniem w czasie kompilacji. (§10.7.3)
- Wartość zwracana po utworzeniu alokacji stosu o zerowym rozmiarze. (§12.8.21)
- Niezależnie od tego, czy element
System.ArithmeticException
(lub jego podklasa) jest zgłaszany, czy przepełnienie nie jest zgłaszane z wartością wynikową będącą argumentem operacji lewej, gdy wunchecked
kontekście i lewym operandem liczby całkowitej jest maksymalna wartość ujemnaint
lublong
wartość, a prawy operand to–1
. (§12.10.3) - Gdy (
System.ArithmeticException
lub podklasa) jest zgłaszana podczas wykonywania operacji reszty dziesiętnej. (§12.10.4) - Wpływ zakończenia wątku, gdy wątek nie ma obsługi wyjątku, a sam wątek zostaje zakończony. (§13.10.6)
- Mechanizm, za pomocą którego uzyskuje się połączenie z metodą zewnętrzną. (§15.6.8)
- Wpływ zakończenia wątku, gdy nie znaleziono pasującej
catch
klauzuli dla wyjątku i kodu, który początkowo rozpoczął ten wątek, jest osiągany. (§21.4). - Środowisko wykonywania może udostępniać dodatkowe atrybuty wpływające na wykonywanie programu w języku C#. (§22.5.1)
- Mapowania między wskaźnikami i liczbami całkowitymi. (§23.5.1)
- Efekt zastosowania operatora jednoargumentowego
*
null
do wskaźnika. (§23.6.2) - Zachowanie, gdy arytmetyka wskaźnika przepełni domenę typu wskaźnika. (§23.6.6, §23.6.7)
- Wynik
sizeof
operatora dla wstępnie zdefiniowanych typów wartości. (§23.6.9) - Zachowanie instrukcji
fixed
, jeśli wyrażenie tablicy jestnull
lub jeśli tablica ma zero elementów. (§23.7) - Zachowanie instrukcji
fixed
, jeśli wyrażenie ciągu tonull
. (§23.7)
B.4 Nieokreślone zachowanie
- Czas uruchomienia finalizatora (jeśli istnieje) dla obiektu, gdy ten obiekt kwalifikuje się do finalizacji (§7.9).
- Reprezentacja
true
(§8.3.9). - Wartość wyniku podczas konwertowania wartości
float
poza zakresem lubdouble
na typ całkowity wunchecked
kontekście (§10.3.2). - Dokładny obiekt docelowy i metoda docelowa delegata wygenerowanego z anonymous_method_expression zawiera (§10.7.2).
- Układ tablic z wyjątkiem niebezpiecznego kontekstu (§12.8.16.5).
- Niezależnie od tego, czy istnieje jakikolwiek sposób wykonywania bloku funkcji anonimowej innej niż przez ocenę i wywołanie lambda_expression lub wyrażenie-anonymous_method (§12.19.3).
- Dokładny czas inicjowania pola statycznego (§15.5.6.2).
- Wynik wywołania
MoveNext
, gdy obiekt modułu wyliczającego jest uruchomiony (§15.14.5.2). - Wynik uzyskiwania
Current
dostępu, gdy obiekt modułu wyliczającego znajduje się w przed, uruchomieniu lub po stanach (§15.14.5.3). - Wynik wywołania
Dispose
obiektu modułu wyliczającego jest w stanie uruchomienia (§15.14.5.4). - Atrybuty typu zadeklarowanego w wielu częściach są określane przez połączenie w nieokreślonej kolejności atrybutów każdego z jego części (§22.3).
- Kolejność, w jakiej składowe są pakowane w strukturę (§23.6.9).
- Wyjątek występuje podczas wykonywania finalizatora i ten wyjątek nie jest przechwycony (§21.4).
- Jeśli więcej niż jeden element członkowski pasuje, który element członkowski jest implementacją
I.M
(§18.6.5).
B.5 Inne problemy
- Dokładne wyniki oceny wyrażeń zmiennoprzecinkowych mogą się różnić od jednej implementacji do innej, ponieważ implementacja może oceniać takie wyrażenia przy użyciu większego zakresu i/lub precyzji niż jest to wymagane (§8.3.7).
- Interfejs wiersza polecenia zastrzega sobie pewne podpisy pod kątem zgodności z innymi językami programowania (§15.3.10).
Koniec tekstu informacyjnego.
Współpracuj z nami w serwisie GitHub
Źródło tej zawartości można znaleźć w witrynie GitHub, gdzie można również tworzyć i przeglądać problemy i żądania ściągnięcia. Więcej informacji znajdziesz w naszym przewodniku dla współtwórców.
ECMA C# draft specification