Cuprins:
Definiție - Ce înseamnă Atributul condițional?
Un atribut condițional este o etichetă folosită pentru a marca o metodă sau o clasă a cărei execuție depinde de definiția identificatorului de preprocesare.
Un atribut condițional indică o condiție pentru a specifica compilarea condițională în care metodele sunt selectate selectiv pe baza definiției simbolurilor. Instruiește compilatorul să compileze (în limbajul Microsoft Intermediate) sau să nu compileze anumite blocuri de cod, pe baza unei condiții - indiferent dacă este definit sau nu un simbol specific compilării condiționate. Dacă simbolurile specifice nu au fost definite în momentul în care sunt apelate, apelurile către acea metodă sau clasă vor fi ignorate de compilator.
Techopedia explică Atributul condițional
Un atribut condițional are următoarele caracteristici:
- Poate fi aplicat la metode și clase, dar numai dacă sunt derivate dintr-un atribut.
- În timp ce se aplică un atribut condițional la o clasă, clasa de atribute va fi emisă în metadate numai dacă simbolul de compilare condiționat este definit.
- Este nevoie de un parametru, care este simbolul identificatorului care controlează compilarea.
- Argumentele transmise către o metodă condițională sau o clasă de atribute vor fi verificate de tip de către compilator.
- Este complet îngrijit de compilator și nu de timpul de rulare.
- Nu poate fi aplicată unei metode utilizate într-o expresie de creare a delegaților.
- Nu afectează codul generat pentru metoda condițională, dar afectează apelul la metodă.
Un atribut condițional oferă un model de programare declarativ și ajută la menținerea cu ușurință a codului sursă. Prin aplicarea unui atribut condițional la nivelul metodei, codul sursă este mai lizibil. Apelantul unei metode nu trebuie să ia un cod suplimentar pentru compilarea condiționată. Un atribut condiționat este utilizat pentru a permite urmărirea și înregistrarea funcționalităților din compilările de depanare, folosind identificatorul DEBUG pentru a afișa și înregistra informațiile de diagnostic legate de aplicație. De asemenea, ajută la separarea logicii legate de construirea de depanare (în sistemele utilizate pentru dezvoltare) de versiunile de lansare, care sunt implementate în site-uri și aplicații. Pentru a menține mai multe ediții (cu funcții selectate într-o ediție) a unui software fără duplicare de cod, compilarea condiționată formează tehnica potrivită prin care se menține codul sursă principal principal pentru ediții multiple pe baza simbolurilor respective definite pentru ei.
Următoarele sunt câteva reguli de urmat în timp ce utilizați un atribut condițional:
- O metodă condiționată din interiorul unei declarații de clasă sau struct trebuie să aibă un tip de returnare ca nul.
- În timp ce se utilizează mai mulți identificatori ca atribute condiționale, includerea metodei (metodelor) se bazează pe rezultatul unei OR logice sau a unui AND logic pe simbolurile definite.
- Nu poate fi specificată pe o metodă într-o declarație de interfață.
- O metodă condiționată nu poate fi precedată de cuvântul cheie „înlocuire”, dar poate fi virtuală. Dacă este suprasolicitat, se consideră implicit o condiționare.
- Simbolurile considerate pentru compilarea condiționată pot fi definite ca opțiuni în linia de comandă a compilatorului sau ca variabile de mediu din shell-ul de sistem sau ca pragme (folosind directiva preprocesorului "#define") în codul sursă.
- Spre deosebire de C ++, definiția simbolurilor în C # poate fi în orice ordine și, prin urmare, ordonarea dintre „#define” și o metodă condițională trebuie să fie setată în mod corespunzător.
Deși utilizarea „#if și #endif” formează o opțiune alternativă la atributul condițional, acesta din urmă oferă o abordare mai curată, elegantă și mai puțin predispusă la erori în comparație cu prima. Pe plan intern, diferența este că, în timp ce utilizați un atribut condițional pentru o metodă, metoda va fi încă o parte a ansamblului și nu va fi încărcată. Dar în cazul #if / #endif, metoda nu va fi vizibilă în ansamblul propriu-zis.
Această definiție a fost scrisă în contextul C #