2008-09-25 11 views
30

मैं एक स्थिर विधि में this कीवर्ड का उपयोग करने की कोशिश कर रहा हूं, लेकिन संकलक मुझे इसका उपयोग करने की अनुमति नहीं देगा।आप .NET में स्थिर विधि में कीवर्ड 'इस' का उपयोग क्यों नहीं कर सकते?

क्यों नहीं?

उत्तर

62

यह एक आसान है। कीवर्ड 'यह' कक्षा के वर्तमान उदाहरण के संदर्भ को संदर्भित करता है। स्टेटिक विधियां (या कोई स्थिर सदस्य) किसी विशेष उदाहरण से संबंधित नहीं हैं। वे कक्षा का एक उदाहरण बनाये बिना मौजूद हैं। एमएसडीएन दस्तावेज़ों में कौन से स्थिर सदस्य हैं और क्यों/कब उपयोग करें, उनमें से in depth explanation अधिक है।

5

स्टेटिक विधियां कक्षा विशिष्ट हैं और उदाहरण विशिष्ट नहीं हैं। "यह" रनटाइम पर कक्षा के एक उदाहरण का प्रतिनिधित्व करता है, इसलिए इसका उपयोग स्थिर संदर्भ में नहीं किया जा सकता है क्योंकि यह किसी भी उदाहरण का संदर्भ नहीं देगा। इसके बजाय कक्षा का नाम उपयोग किया जाना चाहिए और आप कक्षा

1

में स्थिर सदस्यों तक पहुंचने में सक्षम होंगे, यह वर्तमान इंस्टेंस ऑब्जेक्ट का प्रतिनिधित्व करता है और स्थिर विधियों के साथ कोई उदाहरण नहीं है।

8

एक स्थिर विधि से, एक अतिरिक्त नोट के रूप में, आप उस वर्ग के एक्सेस या स्थिर सदस्य तक पहुंच सकते हैं। उदाहरण नीचे वैध और कभी-कभी काफी उपयोगी बनाना।

public static void StaticMethod(Object o) 
{ 
    MyClass.StaticProperty = o; 
} 
1

स्थिर विधि में कोई this ऑब्जेक्ट संदर्भ नहीं है।

1

यदि आप स्थैतिक फ़ंक्शन में कक्षा के गैर स्थैतिक फ़ंक्शन का उपयोग करना चाहते हैं। स्थिर कार्य में कक्षा का ऑब्जेक्ट बनाएं। जैसे

Class ClsProgram(){ 
public static void staticfunc(){ 
ClsProgram Obj = new ClsPrograM() 
Obj.NonStaticFunc(); 
} 
public void NonStaticFunc(){} 
} 
0

ओपी के प्रश्न के लिए के लिए, स्वीकार किए जाते हैं जवाब का संदर्भ लें। यह उत्तर उन लोगों के लिए है जो स्थिर विधियों में उपयोग करने के लिए एक तेज़ एक लाइनर की तलाश में हैं।

यदि वर्ग एक रूप है, और यह खुला है (आपको फॉर्म के नाम की भी आवश्यकता है), इसे एक स्थिर विधि के भीतर बुलाया जा सकता है;

Application.OpenForms["MainForm"]; 
संबंधित मुद्दे

 संबंधित मुद्दे