Cred că codul dvs. este ca:
void DoSomethingIfCompFlag() {
#if COMPILER_FLAG
//your code
#endif
}
Acest lucru nu va fi optimizat, cu toate acestea:
partial void DoSomethingIfCompFlag();
#if COMPILER_FLAG
partial void DoSomethingIfCompFlag() {
//your code
}
#endif
Prima metodă goală este parțială, iar compilatorul C# 3 o va optimiza.
Apropo: aceasta este în esență ceea ce sunt metode parțiale pentru. Microsoft a adăugat generatoare de cod la designerii lor Linq care au nevoie să apeleze metode care în mod implicit nu fac nimic.
Mai degrabă decât să vă forțeze să supraîncărcați metoda, puteți folosi o parte.
În acest fel, partialii sunt complet optimizați dacă nu sunt utilizați și nu se pierde nici o performanță, mai degrabă decât adăugarea costurilor suplimentare ale apelului pentru metoda extra gol.