Table des matières:
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 sélectivement sur la base de la définition des 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 de leur appel, les appels à cette méthode ou classe seront ignorés par le compilateur.
Techopedia explique l'attribut conditionnel
Un attribut conditionnel a les caractéristiques suivantes:
- Elle peut être appliquée 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 ne sera émise vers les métadonnées que 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 complètement 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é.
- Il 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éclarative et aide à maintenir 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'identifiant DEBUG pour afficher et consigner les informations de diagnostic liées à l'application. En outre, cela 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 elles.
Voici quelques règles à suivre lors de l'utilisation d'un attribut conditionnel:
- Une méthode conditionnelle dans une déclaration de classe ou de structure doit avoir un type de retour comme vide.
- Tout en utilisant plusieurs identifiants 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 outrepassé, il est considéré comme un conditionnel implicitement.
- Les symboles pris en compte pour la compilation conditionnelle peuvent être définis comme des options de ligne de commande du compilateur ou comme des variables d'environnement à partir du shell du système d'exploitation ou comme des pragmas (en utilisant la directive de 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 à la première. 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 #