2009-05-05 15 views
7

क्या एक इंस्टेंस क्लास के स्थैतिक सदस्य केवल उदाहरण के रूप में रहते हैं, या स्थिर सदस्य आवेदन के पूरे जीवन में रहते हैं?एक इंस्टेंस क्लास के स्टेटिक सदस्य

उदाहरण के लिए, कहें कि मेरे पास एक स्थिर संपत्ति के रूप में हैशटेबल है। यदि मैंने इसे "इंस्टेंस" से आइटम जोड़ा है तो क्या वे किसी अन्य "इंस्टेंस" से उपलब्ध होंगे?

उत्तर

16

वे AppDomain के पूरे जीवनकाल में रहते हैं। (विंडोज़ अनुप्रयोगों के लिए, आमतौर पर यह प्रक्रिया का जीवनकाल होता है; हालांकि, आप जो भी कर रहे हैं उसके आधार पर यह नहीं हो सकता है। AppDomains एएसपी.NET में समय-समय पर पुनर्नवीनीकरण किया जाता है।)

स्थिर चर के बारे में मत सोचें उदाहरणों के बीच साझा किया जा रहा है - किसी विशेष घटना के बजाय टाइप से संबंधित के रूप में उनके बारे में सोचें। यह समझना आसान बनाता है कि चीजें कैसे काम करती हैं जब कभी-कभी कभी भी कोई उदाहरण नहीं बनाते।

उदाहरण के लिए:

class Test 
{ 
    static int x = 0; 

    static void Main() 
    { 
     x = 10; 
     Console.WriteLine(x); 
    } 
} 

कोई उदाहरण हैं चारों ओर "साझा" Test.x करने के लिए - लेकिन क्योंकि यह नहीं बल्कि उदाहरणों Test की साथ तुलना प्रकार Test के साथ संबद्ध है कि, ठीक है।

आप तर्क दे सकते हैं कि यह एक सुंदर सूक्ष्म भेद है, लेकिन यह एक है जिसे मैंने उपयोगी पाया है।

+0

मुझे "सभी प्रकारों के बीच साझा किए गए प्रकार _and_ से जुड़े" के संदर्भ में इसके बारे में सोचना पड़ता है। –

+2

@ जोएल: लेकिन क्या यह अभी भी झूठी भावना नहीं देता है कि उदाहरणों के साथ इसका कोई संबंध नहीं है? आप समान रूप से वैध रूप से तर्क दे सकते हैं कि test.x को "स्ट्रिंग" के सभी उदाहरणों के साथ भी साझा किया गया है :) –

+5

मुझे लगता है कि स्थिर सदस्यों के पास टाइप नाम और एक्सेस संशोधक हैंडलिंग के अलावा अन्य उदाहरणों के साथ कुछ नहीं करना है, इसलिए मैं ' इस पर जोएल की बजाय जॉन के साथ एम। –

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