Conformance

Conformance is of interest to the following audiences: Those designing, implementing, or maintaining C# implementations. Governmental or commercial entities wishing to procure C# implementations. Testing organizations wishing to provide a C# conformance test suite. Programmers wishing to port code from one C# implementation to another. Educators wishing to teach Standard C#. Authors wanting to write about Standard C#.
As such, conformance is most important, and the bulk of this ECMA Standard is aimed at specifying the characteristics that make C# implementations and C# programs conforming ones.
The text in this ECMA Standard that specifies requirements is considered normative. All other text in this specification is informative; that is, for information purposes only. Unless stated otherwise, all text is normative. Normative text is further broken into required and conditional categories. Conditionally normative text specifies requirements for a feature such that if that feature is provided, its syntax and semantics must be exactly as specified.
If any requirement of this ECMA Standard is violated, the behavior is undefined. Undefined behavior is otherwise indicated in this ECMA Standard by the words ''undefined behavior'' or by the omission of any explicit definition of behavior. There is no difference in emphasis among these three; they all describe ''behavior that is undefined.''
A strictly conforming program shall use only those features of the language specified in this ECMA Standard as being required. (This means that a strictly conforming program cannot use any conditionally normative feature.) It shall not produce output dependent on any unspecified, undefined, or implementation-defined behavior.
A conforming implementation of C# must accept any strictly conforming program.
A conforming implementation of C# must provide and support all the types, values, objects, properties, methods, and program syntax and semantics described in this ECMA Standard.
A conforming implementation of C# shall interpret characters in conformance with the Unicode Standard, Version 3.0 or later, and ISO/IEC 10646-1. Conforming implementations must accept Unicode source files encoded with the UTF-8 encoding form.
A conforming implementation of C# shall not successfully translate source containing a #error preprocessing directive unless it is part of a group skipped by conditional compilation.
A conforming implementation of C# shall produce at least one diagnostic message if the source program violates any rule of syntax, or any negative requirement (defined as a "shall" or "shall not" or "error" or "warning" requirement), unless that requirement is marked with the words "no diagnostic is required".
A conforming implementation of C# is permitted to provide additional types, values, objects, properties, and methods beyond those described in this ECMA Standard, provided they do not alter the behavior of any strictly conforming program. Conforming implementations are required to diagnose programs that use extensions that are ill formed according to this ECMA Standard. Having done so, however; they can compile and execute such programs. (The ability to have extensions implies that a conforming implementation reserves no identifiers other than those explicitly reserved in this ECMA Standard.)
A conforming implementation of C# shall be accompanied by a document that defines all implementation-defined characteristics, and all extensions.
A conforming implementation of C# shall support the class library documented in 167D. This library is included by reference in this ECMA Standard.
A conforming program is one that is acceptable to a conforming implementation. (Such a program may contain extensions or conditionally normative features.)