पर सशर्त विशेषता मैं सोच रहा हूं कि जब आप एक सिस्टम को डालते हैं तो डायग्नोस्टिक्स। शर्त ("DEBUG") बेस क्लास में वर्चुअल विधि पर विशेषता है जिसे आपको व्युत्पन्न कक्षाओं पर कंपाइलर त्रुटियां नहीं मिलती हैं उस वर्चुअल विधि को ओवरराइड करें लेकिन स्थिति पूरी होने पर सशर्त विशेषता नहीं है। उदाहरण:वर्चुअल फ़ंक्शन
public class MyBaseClass
{
[System.Diagnostics.Conditional("DEBUG")]
public virtual void Test()
{
//Do something
}
}
public class MyDerivedClass : MyBaseClass
{
public override void Test()
{
//Do something different
}
}
ऐसा लगता है कि जब डीबग परिभाषित नहीं है, सशर्त अनिवार्य रूप से एक sitation जहां ओवरराइड विधि वास्तविक आईएल उत्पादन में कोई आभासी समारोह है क्योंकि वहाँ मौजूद नहीं कर सकते हो जाएगा। फिर भी मेरे परीक्षण में, संकलक कोड को जेनरेट करने के लिए ठीक लगता है। क्या सशर्त बस फंक्शन बॉडी के लिए आईएल फेंकता है लेकिन कक्षा हस्ताक्षर में कोई वास्तविक बदलाव नहीं करता है?
मूर्तिकला: बेस क्लास के वर्चुअल से सशर्त विशेषता को व्युत्पन्न क्लास के ओवरराइड परिणामों में एक कंपाइलर त्रुटि में स्थानांतरित करना। यह जवाब में विस्तृत व्यवहार पर विचार कर समझ में आता है। – devgeezer