5 Conformidade
A conformidade interessa aos seguintes públicos:
- Aqueles que projetam, implementam ou mantêm implementações em C#.
- Entidades governamentais ou comerciais que desejem adquirir implementações em C#.
- Organizações de teste que desejam fornecer um conjunto de testes de conformidade em C#.
- Programadores que desejam portar código de uma implementação C# para outra.
- Educadores que desejam ensinar C# padrão.
- Autores que querem escrever sobre C# padrão.
Como tal, a conformidade é mais importante, e a maior parte desta especificação visa especificar as características que tornam as implementações C# e programas C# conformes.
O texto desta especificação que especifica os requisitos é considerado normativo. Todos os outros textos desta especificação são informativos, ou seja, apenas para fins informativos. Salvo indicação em contrário, todo o texto é normativo. O texto normativo é ainda dividido em categorias obrigatórias e condicionais. O texto condicionalmente normativo especifica um recurso e seus requisitos onde o recurso é opcional. No entanto, se esse recurso for fornecido, sua sintaxe e semântica devem ser exatamente como especificado.
O comportamento indefinido é indicado nesta especificação apenas pelas palavras 'comportamento indefinido'.
Um programa estritamente conforme deve utilizar apenas as características da linguagem especificada nesta especificação como sendo necessárias. (Isso significa que um programa estritamente conforme não pode usar qualquer recurso condicionalmente normativo.) Não deve produzir resultados dependentes de qualquer comportamento não especificado, indefinido ou definido pela implementação.
Uma implementação em conformidade do C# deve aceitar qualquer programa estritamente conforme.
Uma implementação conforme do C# deve fornecer e suportar todos os tipos, valores, objetos, propriedades, métodos e sintaxe e semântica do programa descritos nas partes normativas (mas não condicionalmente normativas) nesta especificação.
Uma implementação em conformidade do C# deve interpretar caracteres em conformidade com o padrão Unicode. As implementações conformes devem aceitar unidades de compilação codificadas com o formulário de codificação UTF-8.
Uma implementação conforme do C# não deve traduzir com êxito a fonte que contém uma diretiva de pré-processamento #error, a menos que faça parte de um grupo ignorado pela compilação condicional.
Uma implementação conforme do C# deve produzir pelo menos uma mensagem de diagnóstico se o programa de origem violar qualquer regra de sintaxe ou qualquer requisito negativo (definido como um requisito "deve" ou "não deve" ou "erro" ou "aviso"), a menos que esse requisito seja marcado com as palavras "nenhum diagnóstico é necessário".
Uma implementação em conformidade do C# é permitida para fornecer tipos, valores, objetos, propriedades e métodos adicionais além dos descritos nesta especificação, desde que eles não alterem o comportamento de nenhum programa estritamente conforme. Implementações conformadoras são necessárias para diagnosticar programas que usam extensões que estão mal formadas de acordo com esta especificação. Tendo feito isso, no entanto, eles podem compilar e executar tais programas. (A capacidade de ter extensões implica que uma implementação em conformidade não reserva identificadores além daqueles explicitamente reservados nesta especificação.)
Uma implementação conforme do C# deve ser acompanhada por um documento que define todas as características definidas pela implementação e todas as extensões.
Uma implementação conforme do C# deve suportar a biblioteca de classes documentada no Anexo C. Esta biblioteca está incluída por referência nesta especificação.
Um programa em conformidade é aquele que é aceitável para uma implementação conforme. (Tal programa tem permissão para conter extensões ou recursos condicionalmente normativos.)
ECMA C# draft specification