2010-02-17 11 views
6

यह मूल लगता है लेकिन मुझे यह काफी छोटा लगता है। बस आप स्थिर वर्ग (यानी कंसोल-एप्लिकेशन) के साथ वैश्विक चर सेट करने की अनुशंसा कैसे करेंगे?एक स्थैतिक विधि में वैश्विक चर

आपको थोड़ा और पृष्ठभूमि देने के लिए मुख्य विधि कुछ कस्टम ईवेंटहैंडर्स को कॉल कर रही है जिन्हें मैं चर/प्राप्त करने की उम्मीद करता हूं।

आपके विचारों या सुझावों की सराहना की जाती है।

+9

मैं व्यक्तिगत रूप से आपकी शब्दावली से "वैश्विक परिवर्तनीय" वाक्यांश को मिटाने की अनुशंसा करता हूं। – Aaronaught

+6

भविष्य के संदर्भ के लिए, जो कुछ छोटा है, वह कुछ है जो आपको सरल लगता है। – NerdFury

उत्तर

9

सबसे आसान तरीका

public static Object MyGlobalVariable; 

जो एक सार्वजनिक स्थैतिक क्षेत्र बनाता है। थोड़ा बेहतर है:

public static Object MyGlobalVariable { get; set; } 

जो सार्वजनिक स्थैतिक संपत्ति बनाता है।

+1

संपत्ति थोड़ा बेहतर क्यों है? – IllidanS4

+0

@ IllidanS4, stackoverflow.com/questions/653536/difference-between-property-and-field-in-c-sharp-3-0/653799 –

+0

मुझे अंतर पता है, लेकिन स्थैतिक गुण स्थिर क्षेत्रों से निष्पक्ष रूप से बेहतर हैं? – IllidanS4

1

100% निश्चित नहीं है लेकिन आप अपने चर को पकड़ने के लिए सिंगलटन को आजमा सकते हैं। यह जानने के बिना कि आप क्या हासिल करने की कोशिश कर रहे हैं, यह सलाह देना मुश्किल है कि क्या यह समाधान आपको सड़क से काट नहीं देगा।

http://www.yoda.arachsys.com/csharp/singleton.html

13

सी # में कोई वैश्विक चर रहे हैं। एक चर हमेशा स्थानीय रूप से स्कॉप्ड होता है। कोड की मौलिक इकाई कक्षा है, और एक कक्षा के भीतर आपके पास फ़ील्ड, विधियां और गुण हैं।

आप "वैश्विक चर" कुछ कक्षा में एक सार्वजनिक स्थैतिक क्षेत्र या संपत्ति बनाकर नकल कर सकते हैं, लेकिन आप नहीं करना चाहिए। सी # एक बहुत अच्छे कारण के लिए यह मुश्किल बनाता है; वैश्विक चर शुद्ध बुराई हैं। वे ओओ डिजाइन के कई अच्छे सिद्धांतों का उल्लंघन करते हैं - encapsulation, ढीले युग्मन, और उच्च संयोजन, कुछ ही नाम देने के लिए।

मुझे एहसास है कि यह एक शुरुआती प्रश्न है, लेकिन मुझे लगता है कि यह है क्योंकि यह एक शुरुआती सवाल है कि यह कहना बहुत महत्वपूर्ण है। अब सीखना शुरू करने का सबसे अच्छा समय है कि कौन सी रणनीति सक्रिय रूप से निराश होती है या सी # में भी खतरनाक होती है, और वैश्विक चर के रूप में स्थिर क्षेत्र/संपत्ति का उपयोग करके उनमें से लगभग छह है। इन संरचनाओं के लिए वैध उपयोग हैं, लेकिन स्थान से स्थान पर डेटा पास करना उनमें से एक नहीं है।

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

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

+0

विस्तृत करने के लिए धन्यवाद .. यह बहुत उपयोगी था। –

+0

मान लीजिए कि मेरे पास मुख्य धागे से एक साथ चलने वाले कुछ धागे हैं और अब जब उन धागे में विफलता है, तो मैं विफलता गिनती को बढ़ाना चाहता हूं। तब यह कैसे किया जाएगा? – user20358

+0

@ user20358: समाधान की अनुशंसा करने के लिए यह वास्तव में पर्याप्त जानकारी नहीं है। धागे क्या कर रहे हैं? वे क्यों विफल हो जाएंगे? विफलता के परिणाम क्या हैं? * उन्हें गिनने * या उन्हें कुछ अनुवर्ती कार्रवाई करने के विरोध में * गिनती * की बात क्या है? आपको अपनी समस्या को स्पष्ट करना चाहिए और एक नया प्रश्न पूछना चाहिए। – Aaronaught

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