Przeczytaj w języku angielskim

Udostępnij za pośrednictwem


5 Zgodność

Zgodność jest zainteresowana następującymi odbiorcami:

  • Ci, którzy projektują, implementują lub utrzymują implementacje języka C#.
  • Instytucje rządowe lub komercyjne, które chcą uzyskać implementacje języka C#.
  • Organizacje testowe, które chcą udostępnić zestaw testów zgodności w języku C#.
  • Programiści, którzy chcą przenosić kod z jednej implementacji języka C# do innej.
  • Nauczyciele, którzy chcą uczyć standardowego języka C#.
  • Autorzy, którzy chcą napisać o języku C#w warstwie Standardowa.

W związku z tym zgodność jest najważniejsza, a większość tej specyfikacji ma na celu określenie cech, które sprawiają, że implementacje języka C# i programy języka C# są zgodne.

Tekst w tej specyfikacji określający wymagania jest uznawany za normatywny. Cały inny tekst w tej specyfikacji jest informacyjny. Oznacza to, że tylko do celów informacyjnych. Chyba że określono inaczej, cały tekst jest normatywny. Tekst normacyjny jest dodatkowo podzielony na wymagane i warunkowe kategorie. Warunkowo normatywny tekst określa funkcję i jej wymagania, w których funkcja jest opcjonalna. Jeśli jednak ta funkcja zostanie podana, jego składnia i semantyka są dokładnie tak samo określone.

Niezdefiniowane zachowanie jest wskazywane w tej specyfikacji tylko przez słowa "niezdefiniowane zachowanie".

Ściśle zgodny program używa tylko tych cech języka określonego w niniejszej specyfikacji, zgodnie z wymaganiami. (Oznacza to, że ściśle zgodny program nie może używać żadnej warunkowo normatywnej funkcji). Nie generuje on danych wyjściowych zależnych od nieokreślonego, niezdefiniowanego ani zdefiniowanego przez implementację zachowania.

Zgodność z implementacją języka C# przyjmuje każdy ściśle zgodny program.

Zgodna implementacja języka C# zapewnia i obsługuje wszystkie typy, wartości, obiekty, właściwości, metody i składnię programu oraz semantyka opisaną w normatywnych (ale nie warunkowo normatywnych) częściach tej specyfikacji.

Zgodna implementacja języka C# interpretuje znaki zgodne ze standardem Unicode. Zgodne implementacje akceptują jednostki kompilacji zakodowane przy użyciu formularza kodowania UTF-8.

Zgodna implementacja języka C# nie może pomyślnie przetłumaczyć źródła zawierającego dyrektywę #error przetwarzania wstępnego, chyba że jest częścią grupy pominiętej przez kompilację warunkową.

Zgodna implementacja języka C# generuje co najmniej jeden komunikat diagnostyczny, jeśli program źródłowy narusza jakąkolwiek regułę składni lub jakiekolwiek negatywne wymaganie (zdefiniowane jako "shall" lub "nie", "nie" lub "błąd" lub "ostrzeżenie" wymaganie), chyba że wymóg ten jest oznaczony słowami "nie jest wymagana diagnostyka".

Zgodna implementacja języka C# może udostępniać dodatkowe typy, wartości, obiekty, właściwości i metody poza tymi opisanymi w tej specyfikacji, pod warunkiem, że nie zmieniają zachowania żadnego ściśle zgodnego programu. Zgodne implementacje są wymagane do diagnozowania programów korzystających z rozszerzeń, które są źle sformułowane zgodnie z tą specyfikacją. Po wykonaniu tych czynności mogą jednak kompilować i wykonywać takie programy. (Możliwość posiadania rozszerzeń oznacza, że zgodna implementacja zastrzega sobie żadnych identyfikatorów innych niż te jawnie zastrzeżone w tej specyfikacji).

Do zgodnej implementacji języka C# należy dołączyć dokument, który definiuje wszystkie cechy zdefiniowane przez implementację i wszystkie rozszerzenia.

Zgodna implementacja języka C# wspiera bibliotekę klas udokumentowaną w załączniku C. Ta biblioteka jest dołączona przez odwołanie do tej specyfikacji.

Zgodny program jest taki, który jest akceptowalny dla zgodnej implementacji. (Taki program może zawierać rozszerzenia lub warunkowo normatywne funkcje).