मामले में आप स्थिर तरीकों
से परिचित आप शायद पहले से ही स्थिर तरीकों से परिचित हैं नहीं कर रहे हैं। यदि आप नहीं हैं, तो समझने में आसान अंतर यह है कि आपको किसी ऑब्जेक्ट को एक स्थिर विधि का उपयोग करने के लिए कोई ऑब्जेक्ट बनाने की आवश्यकता नहीं है, लेकिन आपको किसी ऑब्जेक्ट का एक उदाहरण बनाने की आवश्यकता है जिसे गैर- स्थैतिक विधि
एक अच्छा उदाहरण System.IO.Directory और System.IO.DirectoryInfo कक्षाएं है।
डायरेक्टरी क्लास स्थैतिक तरीकों की पेशकश करता है, जबकि DirectoryInfo क्लास नहीं करता है।
आपके लिए अंतर देखने के लिए यहां दो लेख दिए गए हैं।
http://visualcsharptutorials.com/2011/01/system-io-directory-class/
http://visualcsharptutorials.com/2011/01/system-io-directoryinfo-class/
अब पर स्थिर घटनाओं करने के लिए ...
हालांकि, स्थिर घटनाओं शायद ही कभी जंगली में देखा जाता है। ऐसे बहुत कम मामले हैं जिन्हें मैं ओपीएफ सोच सकता हूं जहां मैं वास्तव में एक का उपयोग करना चाहता हूं, लेकिन एक कोडप्रोजेक्ट आलेख है जो एक संभावित उपयोग दिखाता है।
http://www.codeproject.com/KB/cs/staticevent.aspx
यहाँ कुंजी सोचा (प्रासंगिक पाठ बताते बोल्ड मेरे द्वारा जोड़ा) स्पष्टीकरण से लिया जाता है:
हम एक अलग वस्तु के रूप में इस संपत्ति को देखा और हमने सुनिश्चित किया वहां एक समय में इसका केवल एक उदाहरण है। और लेनदेन के सभी उदाहरणों को पता था कि आवश्यकता होने पर इसे कहां मिलना है। हालांकि अंतर ठीक है। लेन-देन को विनिमय दर पर होने वाले परिवर्तनों के बारे में जानने की आवश्यकता नहीं होगी, बल्कि वे वर्तमान बदलते मान का उपयोग करेंगे जब वे वर्तमान मान का अनुरोध करके इसका उपयोग करेंगे।यह उदाहरण के लिए पर्याप्त नहीं है, उदाहरण के लिए, हम एप्लिकेशन को कार्यान्वित करना चाहते हैं जहां उपयोगकर्ता इंटरफ़ेस में फ़ॉन्ट जैसे यूआई विशेषताओं में परिवर्तन पर तत्काल प्रतिक्रिया करता है, जैसे कि यह रीयल-टाइम पर होना है। अगर हम को फ़ॉन्टफॉर्म में को स्थिर श्रेणी नामक फ़ॉन्ट क्लास में को बदलने के लिए एक स्थिर विधि हो सकती है और पर उन्हें बताए जाने के लिए सभी उदाहरणों के लिए एक स्थैतिक घटना मूल्य और स्थिर स्थिति हो सकती है, तो उन्हें उनकी उपस्थिति को अपडेट करने की आवश्यकता होती है।
.NET डेवलपर्स के रूप में हमें डिस्कनेक्ट किए गए मॉडल के साथ काम करने के लिए प्रशिक्षित किया जाता है। क्लासिक एडीओ की तुलना में ADO.NET के बारे में सोचें। एक वीबी 6 ऐप में, आप डेटा नियंत्रणों का उपयोग कर सकते हैं जो निम्न कार्यक्षमता की अनुमति देंगे: यदि आप अपने पीसी पर ऐप चला रहे थे, तो आपके ग्रिड में डेटा अपडेट होगा जब किसी अन्य पीसी पर किसी ने डेटा संपादित किया था।
ऐसा कुछ नहीं है जो .NET डेवलपर्स का उपयोग किया जाता है। हम डिस्कनेक्ट मॉडल के लिए बहुत उपयोग कर रहे हैं। स्टेटिक इवेंट्स अधिक "कनेक्टेड" अनुभव सक्षम करते हैं। (भले ही उस अनुभव कुछ हम किसी भी अधिक के लिए इस्तेमाल नहीं कर रहे हैं।)
तो ग्राहकों की सूची कक्षा स्तर पर भी सही है? क्या इसका मतलब यह है कि एक ही समय में सदस्यता लेने वाले कई थ्रेड खराब चीजों का कारण बनेंगे? –
स्थिर घटनाओं के लिए डिफ़ॉल्ट कार्यान्वयन 'Interlocked.CompareExchange' का उपयोग करेगा जिसका अर्थ है कि दौड़ के मामले में, धागे में से एक की सदस्यता नहीं ली जाएगी। – cdhowie
@cdhowie: यह 'Interlocked.CompareExchange' का बहुत मूर्खतापूर्ण उपयोग होगा। आम तौर पर तुलना-और-स्वैप को पुनः प्रयास लूप के साथ जोड़ा जाता है। –