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 International
Standard is aimed at specifying
the characteristics that make C# implementations and C# programs conforming
ones.
The text in this International 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 International Standard is violated, the behavior
is undefined. Undefined behavior
is otherwise indicated in this International 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 International
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 implementationdefined
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 International
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 International 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 International 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 International Standard.)
C# LANGUAGE SPECIFICATION
4
A conforming implementation of C# shall be accompanied by a document that
defines all implementationdefined
characteristics, and all extensions.
A conforming implementation of C# shall support the class library
documented in . This library is
included by reference in this International Standard.
A conforming program is one that is acceptable to a conforming
implementation. (Such a program may
contain extensions or conditionally normative features.)