Attribut conditionnel

Définition - Que signifie l'attribut conditionnel?

Un attribut conditionnel est une balise utilisée pour marquer une méthode ou une classe dont l'exécution dépend de la définition de l'identifiant de prétraitement.

Un attribut conditionnel indique une condition pour spécifier une compilation conditionnelle dans laquelle les méthodes sont appelées de manière sélective sur la base de la définition de symboles. Il demande au compilateur de compiler (dans Microsoft Intermediate Language) ou non de compiler des blocs de code spécifiques, en fonction d'une condition - qu'un symbole de compilation conditionnelle spécifique soit défini ou non. Si des symboles spécifiques n'ont pas été définis au moment où ils sont appelés, les appels à cette méthode ou classe seront ignorés par le compilateur.

Definir Tech explique l'attribut conditionnel

Un attribut conditionnel a les caractéristiques suivantes:

  • Il peut être appliqué aux méthodes et aux classes, mais uniquement si elles sont dérivées d'un attribut.
  • Lors de l'application d'un attribut conditionnel à une classe, la classe d'attribut sera émise vers les métadonnées uniquement si le symbole de compilation conditionnelle est défini.
  • Il prend un paramètre, qui est le symbole identifiant contrôlant la compilation.
  • Les arguments passés à une méthode conditionnelle ou à une classe d'attributs seront vérifiés par le compilateur.
  • Il est entièrement pris en charge par le compilateur et non par le temps d'exécution.
  • Il ne peut pas être appliqué à une méthode utilisée dans une expression de création de délégué.
  • Cela n'affecte pas le code généré pour la méthode conditionnelle, mais affecte l'appel à la méthode.

Un attribut conditionnel fournit un modèle de programmation déclaratif et permet de gérer facilement le code source. En appliquant un attribut conditionnel au niveau de la méthode, le code source est plus lisible. L'appelant d'une méthode n'a pas besoin de prendre du code supplémentaire pour la compilation conditionnelle. Un attribut conditionnel est utilisé pour activer les fonctionnalités de traçage et de journalisation dans les versions de débogage en utilisant l'identificateur DEBUG pour afficher et consigner les informations de diagnostic liées à l'application. En outre, il permet de séparer la logique liée à la version de débogage (dans les systèmes utilisés pour le développement) des versions de version, qui sont déployées dans les sites et les applications. Pour maintenir plusieurs éditions (avec des fonctionnalités sélectionnées dans certaines éditions) d'un logiciel sans duplication de code, la compilation conditionnelle constitue la bonne technique par laquelle le code source principal unique est maintenu pour plusieurs éditions en fonction des symboles respectifs définis pour eux.

Voici quelques règles à suivre lors de l'utilisation d'un attribut conditionnel:

  • Une méthode conditionnelle à l'intérieur d'une déclaration de classe ou de structure doit avoir un type de retour comme void.
  • Lors de l'utilisation de plusieurs identificateurs comme attributs conditionnels, l'inclusion de méthode (s) est basée sur le résultat d'un OU logique ou d'un ET logique sur les symboles définis.
  • Il ne peut pas être spécifié sur une méthode dans une déclaration d'interface.
  • Une méthode conditionnelle ne peut pas être précédée du mot clé "override", mais elle peut être virtuelle. S'il est remplacé, il est considéré comme un conditionnel implicitement.
  • Les symboles considérés pour la compilation conditionnelle peuvent être définis comme des options de ligne de commande du compilateur ou comme des variables d'environnement du shell du système d'exploitation ou comme des pragmas (en utilisant la directive du préprocesseur "#define") dans le code source.
  • Contrairement à C ++, la définition des symboles en C # peut être dans n'importe quel ordre et donc l'ordre entre "#define" et une méthode conditionnelle doit être correctement défini.

Bien que l'utilisation de "#if et #endif" constitue une option alternative à l'attribut conditionnel, ce dernier fournit une approche plus propre, élégante et moins sujette aux erreurs par rapport au premier. En interne, la différence est que lors de l'utilisation d'un attribut conditionnel pour une méthode, la méthode fera toujours partie de l'assembly et ne sera pas chargée. Mais dans le cas de #if / #endif, la méthode ne sera pas visible dans l'assembly lui-même.

Cette définition a été écrite dans le contexte de C #