Поделиться через


Соответствие 5

Соответствие представляет интерес для следующих аудиторий:

  • Те, кто разрабатывает, реализует или поддерживает реализации C#.
  • Государственные или коммерческие организации, желающие получить реализацию C#.
  • Тестирование организаций, желающих предоставить набор тестов соответствия C#.
  • Программисты, желающие перенести код из одной реализации C#в другую.
  • Преподаватели, желающие научить стандартную C#.
  • Авторы, желающие писать о C#уровня "Стандартный".

Таким образом, соответствие является наиболее важным, и основная часть этой спецификации направлена на указание характеристик, которые делают реализации C# и программы C# соответствующими.

Текст в этой спецификации, указывающий требования, считается нормативным. Все остальные тексты в этой спецификации являются информативными; то есть только для информационных целей. Если не указано иное, все тексты являются нормативными. Нормативный текст также разбивается на обязательные и условные категории. Условный нормативный текст указывает функцию и его требования, в которых эта функция является необязательной. Однако если эта функция предоставлена, его синтаксис и семантика должны быть точно указаны.

Неопределенное поведение указывается в этой спецификации только словами "неопределенное поведение".

Строго соответствующая программа должна использовать только те функции языка, указанного в этой спецификации, как это требуется. (Это означает, что строго соответствующая программа не может использовать любые условные нормативные признаки.) Он не должен производить выходные данные, зависящие от какого-либо неопределенного, неопределенного или определяемого реализацией поведения.

Соответствующая реализация C# должна принимать любую строго соответствующую программу.

Соответствующая реализация C# должна предоставлять и поддерживать все типы, значения, объекты, свойства, методы и семантику программы, описанные в нормативных (но не условно нормативных) частях в этой спецификации.

Соответствующая реализация C# должна интерпретировать символы в соответствии со стандартом Юникода. Соответствующие реализации должны принимать единицы компиляции, закодированные с помощью формы кодирования UTF-8.

Соответствующая реализация C# не должна успешно переводить источник, содержащий директиву предварительной обработки #error, если она не является частью группы, пропущенной условной компиляцией.

Соответствующая реализация C# должна создавать по крайней мере одно диагностическое сообщение, если исходная программа нарушает любое правило синтаксиса или любое отрицательное требование (определенное как "должно" или "не должно" или "не должно" или "предупреждение"), если это требование не отмечено словами "не требуется диагностика".

Соответствующая реализация C# позволяет предоставлять дополнительные типы, значения, объекты, свойства и методы за пределами описанных в этой спецификации, если они не изменяют поведение любой строго соответствующей программы. Для диагностики программ, использующих расширения, которые являются плохо сформированными в соответствии с этой спецификацией, требуются соответствующие реализации. При этом они могут компилировать и выполнять такие программы. (Возможность иметь расширения подразумевает, что соответствующая реализация не резервирует идентификаторы, отличные от явно зарезервированных в этой спецификации.)

Соответствующая реализация C# должна сопровождаться документом, определяющим все характеристики реализации и все расширения.

Соответствующая реализация C# должна поддерживать библиотеку классов, документированную в приложении C. Эта библиотека включается по ссылке в эту спецификацию.

Соответствующая программа является той, которая является приемлемой для соответствующей реализации. (Такая программа может содержать расширения или условно нормативные признаки.)