] प्रदाताओं के साथ काम करते समय, कोई एक परिदृश्य का सामना कर सकता है जहां वे एक अमूर्त स्थिर विधि के साथ एक अमूर्त वर्ग बनाने की इच्छा रखते हैं। इस सुविधा की अनुपस्थिति के पीछे के कारणों की खोज करना एक स्पष्ट समझ प्रदान करता है। एक्सेस करने के लिए ऑब्जेक्ट इंस्टेंटेशन। उन्हें एक ऑब्जेक्ट संदर्भ के बजाय वर्ग नाम के माध्यम से आमंत्रित किया जाता है। स्टेटिक मेथड के लिए उत्पन्न इंटरमीडिएट भाषा (IL) कोड सीधे कॉल को कॉल करता है जो कॉलिंग क्लास की परवाह किए बिना विधि को परिभाषित करता है। यह चित्रित करें, निम्नलिखित कोड पर विचार करें:
सार्वजनिक वर्ग ए
{
सार्वजनिक स्थैतिक शून्य परीक्षण ()
{
}
}
पब्लिक क्लास बी: ए
{
}
वर्ग कार्यक्रम
{
स्थिर शून्य मुख्य (स्ट्रिंग [] args)
{
B.Test ();
}
}
बी क्लास के माध्यम से विधि को कॉल करने के बावजूद, उत्पन्न वास्तविक आईएल कोड यह जैसा दिखता है: .Maxstack 8 L0000: NOP L0001: कॉल void ConsoleApplication1.a :: टेस्ट () L0006: NOP L0007: ret
ध्यान दें कि कॉल को A.Test पर किया गया है, भले ही स्रोत कोड B.Test का उपयोग किया गया हो। यह दर्शाता है कि स्टेटिक विधि कॉल को उस कक्षा के आधार पर संकलन समय पर हल किया जाता है जो विधि को परिभाषित करता है, न कि कॉलिंग क्लास को परिभाषित करता है। तरीके व्युत्पन्न वर्गों में एक ही विधि के विभिन्न कार्यान्वयन की अनुमति देकर बहुरूपी व्यवहार को सक्षम करते हैं। हालांकि, स्टेटिक कॉल .NET में गैर-वर्टुअल हैं, क्योंकि वे सीधे वर्ग के नाम के आधार पर एक विशिष्ट विधि को लक्षित करते हैं। इसलिए, आभासी या अमूर्त स्थिर तरीके C# में एक व्यावहारिक उद्देश्य की सेवा नहीं करेंगे। कोई बहुरूपता नहीं, अमूर्त स्थैतिक तरीकों की अवधारणा का कोई महत्वपूर्ण उपयोग मामला नहीं है। इसलिए, यह भाषा द्वारा समर्थित नहीं है।अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3