Lar Desenvolvimento O que é um atributo condicional em c? - o que é techopedia

O que é um atributo condicional em c? - o que é techopedia

Índice:

Anonim

Definição - O que significa Atributo Condicional?

Um atributo condicional é uma marca usada para marcar um método ou classe cuja execução depende da definição do identificador de pré-processamento.


Um atributo condicional indica uma condição para especificar a compilação condicional em que os métodos são chamados seletivamente com base na definição de símbolos. Ele instrui o compilador a compilar (no Microsoft Intermediate Language) ou não compilar blocos de código específicos, com base em uma condição - se um símbolo de compilação condicional específico está ou não definido. Se símbolos específicos não tiverem sido definidos no instante em que são chamados, as chamadas para esse método ou classe serão ignoradas pelo compilador.

Techopedia explica Atributo Condicional

Um atributo condicional possui as seguintes características:

  • Pode ser aplicado a métodos e classes, mas apenas se eles forem derivados de um atributo.
  • Ao aplicar o atributo condicional a uma classe, a classe de atributo será emitida para metadados somente se o símbolo de compilação condicional estiver definido.
  • É preciso um parâmetro, que é o símbolo identificador que controla a compilação.
  • Os argumentos passados ​​para um método condicional ou classe de atributo serão verificados pelo tipo pelo compilador.
  • É completamente resolvido pelo compilador e não pelo tempo de execução.
  • Não pode ser aplicado a um método usado em uma expressão de criação de delegado.
  • Não afeta o código gerado para o método condicional, mas afeta a chamada para o método.

Um atributo condicional fornece um padrão de programação declarativo e ajuda a manter facilmente o código fonte. Ao aplicar um atributo condicional no nível do método, o código fonte fica mais legível. O chamador de um método não precisa levar código adicional para compilação condicional. Um atributo condicional é usado para habilitar as funcionalidades de rastreamento e log nas compilações de depuração usando o identificador DEBUG para exibir e registrar informações de diagnóstico relacionadas ao aplicativo. Além disso, ajuda a separar a lógica relacionada à compilação de depuração (nos sistemas usados ​​para desenvolvimento) das compilações de versão, que são implantadas em sites e aplicativos. Para manter várias edições (com recursos selecionados em alguma edição) de um software sem duplicação de código, a compilação condicional forma a técnica correta pela qual o único código fonte principal é mantido para várias edições com base nos respectivos símbolos definidos para elas.


A seguir, algumas regras a serem seguidas ao usar um atributo condicional:

  • Um método condicional dentro de uma declaração de classe ou estrutura deve ter um tipo de retorno como nulo.
  • Ao usar vários identificadores como atributos condicionais, a inclusão de métodos é baseada no resultado de OR lógico ou AND lógico nos símbolos definidos.
  • Não pode ser especificado em um método em uma declaração de interface.
  • Um método condicional não pode ser precedido com a palavra-chave "override", mas pode ser virtual. Se substituído, é considerado implicitamente uma condicional.
  • Os símbolos considerados para compilação condicional podem ser definidos como opções de linha de comando do compilador ou como variáveis ​​de ambiente do shell do SO ou como pragmas (usando a diretiva de pré-processador "#define") no código-fonte.
  • Diferentemente do C ++, a definição de símbolos no C # pode estar em qualquer ordem e, portanto, a ordem entre "#define" e um método condicional deve ser definida corretamente.

Embora o uso de "#if e #endif" constitua uma opção alternativa ao atributo condicional, o último fornece uma abordagem mais limpa, elegante e menos suscetível a erros quando comparado ao anterior. Internamente, a diferença é que, enquanto estiver usando um atributo condicional para um método, o método ainda fará parte da montagem e não será carregado. Mas no caso de #if / #endif, o método não será visível no próprio assembly.

Esta definição foi escrita no contexto de C #
O que é um atributo condicional em c? - o que é techopedia