दिलचस्प पोस्ट
रिक्त चेकबॉक्स के साथ एक HTML फ़ॉर्म सबमिट करें मैं कैसे एक निश्चित स्थिति से मेल खाता है कि एक सरणी की वस्तुओं को ही रख सकते हैं? PHP: फाइल को डाउनलोड किए बिना रिमोट फाइल आकार पृष्ठभूमि में न्यूजलेटर पर पृष्ठभूमि छवि को कैसे बनाऊं? PocketSphinx का उपयोग करके कई कीवर्ड को पहचानना फायरबेज श्रोता में सिंगलटन संपत्ति मान सेट करना मुझे क्यों "एक्सेस-कंट्रोल-अनुमति-उत्पत्ति द्वारा त्रुटि की अनुमति नहीं है" त्रुटि देख रहा हूं? वेबब्राइसर प्रिंट सेटिंग्स Iframe में सामग्री के लिए CSS ओवरराइड बॉडी स्टाइल? PHP के `पोस्ट_मैक्स_आकार` से अधिक फ़ाइलों को कैसे संभाल कर रखो? IIS7 gzip सक्षम करें स्टोरीबोर्ड से UIView दृश्य से परे का विस्तार करने वाली एक UIScrollView में वस्तुओं को कैसे जोड़ें? एंड्रॉइड .apk फाइलें रखता है? यदि ऐसा है तो? पॉइंटर अरथमेटिक अपरिभाषित व्यवहार से बाहर की सीमा क्यों है? बहु-उपयोगकर्ता पहुंच के लिए एक MS-Access DB सेट करना

स्थिर वर्ग के सदस्यों को स्थिर क्यों घोषित करना चाहिए? ऐसा क्यों नहीं है?

जाहिर है, एक स्थिर वर्ग पर एक उदाहरण सदस्य नहीं हो सकता, क्योंकि उस वर्ग को कभी भी प्रारंभ नहीं किया जा सकता था। हमें सदस्यों को स्थिर के रूप में घोषित करने की आवश्यकता क्यों है?

वेब के समाधान से एकत्रित समाधान "स्थिर वर्ग के सदस्यों को स्थिर क्यों घोषित करना चाहिए? ऐसा क्यों नहीं है?"

मैं हर समय इस तरह से प्रश्न पूछता हूं मूलतः सवाल "जब एक घोषित सदस्य के बारे में एक तथ्य संकलक द्वारा अनुमानित किया जा सकता है, तो उस तथ्य की स्पष्ट घोषणा (1) की आवश्यकता है, (2) वैकल्पिक, या (3) मना होना चाहिए?"

कोई भी आसान जवाब नहीं है हर किसी को केस-बाय-केस आधार पर लेना होगा। एक स्थैतिक वर्ग के सदस्य पर "स्थैतिक" डाल देना आवश्यक है। एक छुपा पर "नया" डालकर, व्युत्पन्न वर्ग की गैर-अधोमुखी विधि वैकल्पिक है। एक const पर "स्थिर" डाल देना मना किया है।

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

यह वैकल्पिक बनाने के लिए विचित्र लगता है; मान लें कि आपके पास एक स्थैतिक वर्ग और दो विधियाँ हैं, एक स्थिर स्थैतिक, एक नहीं चूंकि स्थिर सामान्य रूप से डिफ़ॉल्ट नहीं होता है, इसलिए यह सोचना स्वाभाविक लगता है कि उनके बीच अंतर होना है। यह वैकल्पिक रूप से संभवतः भ्रमित होने लगता है।

यह आवश्यक बनाता है, क्योंकि तीन विकल्पों में से कम से कम खराब है।

इस प्रकार की समस्याओं पर अधिक विचार के लिए http://blogs.msdn.com/b/ericlipper/archive/2010/06/10/don-t-repeat-yourself-consts-are-already-static.aspx देखें।

क्योंकि परिभाषा के अनुसार, उनके सभी सदस्यों को स्थिर होना चाहिए उन्होंने कुछ भ्रामक वाक्यविन्यास चीनी नहीं देने का फैसला किया

यह निहित हो सकता है, लेकिन यह भी कोड पढ़ना मुश्किल होगा और भ्रम की स्थिति पैदा करेगा।

रिचर्ड,

हम्मम … मुझे लगता था कि भाषा के डिजाइनरों ने फैसला किया था कि किसी भी संभावित भ्रम को रोकने के लिए यह बहुत स्पष्ट होगा … जब एक रखरखाव, जो कोड नहीं जानता है , एक के बीच में कूदता है स्थिर वर्ग, और मानता है कि वे एक "सामान्य" उदाहरण संदर्भ में हैं

लेकिन जाहिर है, यह सिर्फ एक अनुमान है। अधिकतर IDE आपको वैसे भी वहां मदद करते हैं, "स्वचालित समय पर" स्थिर संशोधक जोड़कर … या कम से कम "लेखन समय" पर अपनी गलती को उजागर करते हुए, "समय संकलन" करने के लिए लगाए गए हैं।

यह एक अच्छा सवाल है … दुर्भाग्यवश एक "सही" उत्तर के साथ नहीं … जब तक कोई सी # -भाषी-डिज़ाइनर ब्लॉग (या समान) से इस लिंक पर चर्चा नहीं कर सकता है। मैं आपको जो बता सकता हूं वह है: "मुझे 1,000 डॉलर की शर्त थी कि यह कोई दुर्घटना नहीं है।"

चीयर्स। कीथ।

मैं एक कदम आगे जाऊँगा और पूछूंगा: सी # को स्थिर कक्षाएं क्यों नहीं है? यह एक अजीब अवधारणा की तरह लगता है, एक वर्ग जो वास्तव में एक वर्ग नहीं है । यह सिर्फ एक कंटेनर है, आप इसे किसी भी चर, पैरामीटर या फ़ील्ड्स टाइप करने के लिए उपयोग नहीं कर सकते आप इसे एक प्रकार पैरामीटर के रूप में भी नहीं उपयोग कर सकते हैं और जाहिर है, आप इस तरह के एक वर्ग का एक उदाहरण कभी नहीं कर सकते हैं

मेरे पास मॉड्यूल हैं, जैसे कि VB.NET और F # में और फिर, स्थैतिक सुधारक भ्रम से बचने के लिए आवश्यक नहीं होगा।

स्पष्ट कोडन चीज़ों को बनाए रखने योग्य बनाती है

यदि मैं एक विधि से एक वर्ग में दूसरे को कॉपी करना चाहता हूं, तो कोड बेहतर संगठित होता है, तो मुझे हर समय कई चीकिंग करना पड़ता है, सिर्फ इसलिए कि गंतव्य वर्ग स्थिर है या स्थिर नहीं है।

सदस्य को स्थैतिक के रूप में घोषित करके, आपके पास यह भी देखा जा सकता है कि कोड क्या है, जब आप इसे देखेंगे।

यह भी कम भ्रमित है एक कक्षा की कल्पना करें जो स्थिर है, और इसके अंदर सदस्यों को स्थिर के रूप में चिह्नित किया गया है, और अन्य चिह्नित नहीं हैं

मैं बहुत सारे कारण देख सकता हूं, और कई अन्य कारण मौजूद हैं।

एक कारण मुझे लगता है कि यह स्पष्ट रूप से कहना महत्वपूर्ण है कि यह एक स्थैतिक है क्योंकि बहु-थ्रेडेड प्रोग्रामिंग मॉडल में, इन स्थैतिक चर एकाधिक थ्रेड्स द्वारा साझा किए जाते हैं। कोड की समीक्षा या कोड विश्लेषण करते समय, चर को पढ़ने से इस महत्व को चुनना बहुत आसान होता है, वर्ग की घोषणा को देखने के बजाय, और यह निर्धारित करने के लिए कि चर स्थैतिक या गैर-स्थिर हैं कोड समीक्षा के दौरान चर को पढ़ते समय यह बहुत भ्रामक हो सकता है अगर आपको पता नहीं है कि वर्ग स्थिर या गैर-स्थिर है

इसका कारण यह है कि कॉपी पेस्ट और अधिक जटिल होगा

यदि आप एक विधि को एक स्थिर वर्ग से गैर-स्थिर वर्ग तक कॉपी करते हैं तो आपको static कीवर्ड जोड़ना होगा।

यदि आप एक विधि को गैर-स्थिर वर्ग से एक स्थिर वर्ग में प्रतिलिपि बनाते हैं, तो आपको static कीवर्ड को निकालना होगा।

आसपास के तरीकों को आगे बढ़ाना प्राथमिक चीज़ डेवलपर्स है ('मुझे इस कोड को दोबारा परिभाषित करने की आवश्यकता है, इसमें कम से कम एक हफ्ते लगेगा'), और इसे आसान बनाकर एरिक और उनकी टीम ने हमें काम के घंटे बचाने की अनुमति दी।