2012-01-04 15 views
5

मुझे इस प्रश्न से संबंधित कोई जानकारी नहीं मिली। मैं सी # में एक वैश्विक सरणी बनाने की कोशिश कर रहा हूं ताकि मैं अपने कोड में अलग-अलग बिंदुओं पर जानकारी इनपुट कर सकूं और फिर इसे प्रदर्शित करने के लिए बाद में जानकारी को वापस कॉल कर सकूं। उदाहरण के लिए, मैं निम्नलिखित जानकारी लेने के लिए और यह सरणी में रखना चाहते हैं:वैश्विक Arrays का उपयोग और उपयोग C#

string auctionID; 
string itemName; 
string itemID; 
string bid; 
string buyout; 
string quantity; 

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

अद्यतन 1

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

अद्यतन 2

मैं काफ़ी OOP पर जंग लगी हूँ, तो मैं अप (धन्यवाद HTML के साथ एक टन निपटने के लिए उस पर और अधिक पढ़ सकते हैं और वास्तव में असली प्रोग्रामिंग के लिए एक मौका नहीं होने जाने के लिए जा रहा हूँ)। सभी के सुझावों के लिए धन्यवाद। अगर मैं कुछ और नहीं समझ सकता तो मैं शायद इस विषय पर वापस पोस्ट करूंगा। चीयर्स!

+1

नहीं, ऐसा मत करो। हम इन दिनों वैश्विक सरणी का उपयोग नहीं करते हैं। – Richard

+0

कैशिंग का उपयोग वैश्विक सरणी की तुलना में बेहतर विचार होगा, क्योंकि आप समवर्ती और बहुप्रचार मुद्दों में भाग लेने की संभावना रखते हैं। – Kane

+0

"मुझे नहीं पता कि प्रत्येक बार जब मैं सरणी में अलग-अलग कॉल करता हूं, उसी सरणी को कॉल करने के लिए, क्योंकि मैं समझता हूं कि सी # ऑब्जेक्ट्स ऑब्जेक्ट्स के रूप में व्यवहार करता है।" यह कोई समझ नहीं आता है। आपको लगता है कि एरे ऑब्जेक्ट्स का मतलब है कि आपको "हर बार एक ही सरणी" नहीं मिलेगी? –

उत्तर

7

वैश्विक चर लगभग हमेशा एक बुरा विचार कर रहे हैं के साथ सूची में नेविगेट तो सी # उन्हें करने के लिए एक कठिन बात बनाने में आता है। हालांकि, अगर तुम सच में, तुम कुछ इस तरह कर सकता है करना चाहते हैं:

public static class GlobalData 
{ 
    public static string[] Foo = new string[16]; 
}; 

// From anywhere in your code... 
Console.WriteLine(GlobalData.Foo[7]); 

ध्यान दें, तथापि, जब तक कि आपके ऐसा करने के लिए एक स्थिर वर्ग बनाने के लिए मजबूर किया जाता है कि, क्यों आगे नहीं जाना और वास्तविक बनाने के एरे परिवर्तनीय निजी, जनता के बजाय, फिर स्थैतिक, सार्वजनिक गेटर और सेटर विधियों को जोड़ें? उस दृष्टिकोण से कम से कम कुछ वैश्विक खतरों में निहित खतरे को हटा दिया जाता है।

1
string[] values; 

या एक विशेष लंबाई में से एक घोषित करने के लिए:

string[] values = new string[6]; // creates an array with a length of 6. 
+0

ओह, मैं समझता हूं। समस्या यह है कि मुझे नहीं पता कि उसे कहां रखा जाए इसके बारे में क्या करना है ताकि विभिन्न विधियां उस सरणी को कॉल कर सकें और इसके अंदर की जानकारी का उपयोग कर सकें। – th3n3wguy

+0

तकनीकी रूप से सही है, लेकिन वास्तव में आईएमएचओ के सवाल का जवाब नहीं देता है। –

+0

@thenewguy कृपया ऑब्जेक्ट उन्मुख प्रोग्रामिंग और डिज़ाइन पैटर्न के बारे में और पढ़ें। आप अभी भी गैर-ओओपी तरीकों में सोच रहे हैं। –

2

ठीक है, एक तरफ तथ्य यह है कि आप की संभावना एक संरचनात्मक समस्या है आप विश्व स्तर पर सामग्री संगृहीत कर रहे हैं से।

आप इसके लिए एक स्थिर संपत्ति का उपयोग कर सकते हैं।

public class MyVariables 
{ 
    private static string[] _MyStuff 
    public static string[] MyStuff 
    { 
      return _MyStuff; 
    } 
} 

तो इस तरह इसे उपयोग: सी # में

MyVariables.MyStuff[0] 
+0

आप कक्षा को स्वयं स्थिर ('सार्वजनिक स्थैतिक वर्ग MyVariables') के रूप में भी घोषित कर सकते हैं, हालांकि यह बहुत महत्वपूर्ण नहीं है - यह केवल उपयोगकर्ताओं को किसी ऑब्जेक्ट को तुरंत चालू करने से रोक देगा। – MusiGenesis

4

कोई वैश्विक चर रहे हैं। केवल वर्ग के सदस्य हैं। आपके आवेदन के एक हिस्से से दूसरे डेटा में डेटा पास करने का सबसे अच्छा तरीका किसी ऑब्जेक्ट (क्लास का एक उदाहरण) का संदर्भ दे रहा है जिसमें उसके सदस्यों में सभी प्रासंगिक डेटा होते हैं।

आप स्थिर वर्गों का भी उपयोग कर सकते हैं, जो वैश्विक चर की तरह व्यवहार करते हैं, लेकिन जब आप ऑब्जेक्ट उन्मुख प्रोग्रामिंग से अधिक परिचित हो जाते हैं तो आपको पता चलेगा कि यह डेटा को संभालने का एक अच्छा तरीका नहीं है।

2

मैं एक जेनेरिक का उपयोग एक सूची की तरह करता हूं क्योंकि आपको आकार के बारे में चिंता करने की ज़रूरत नहीं है और आप इसके लिए फ़ोरैच लूप में एक इटरेटर प्राप्त कर सकते हैं।

values.Add("item"); 

दूर करने के लिए:

values.Remove("item"); 

यदि आप चाहते हैं बहुआयामी तो का उपयोग करें:

List<List<string>> multi_dimens_values; 
1

मुझे लगता है कि Dictionary<string, string> हो जाएगा

List<string> values = new List<string>(); 

एक आइटम डालने के लिए अधिक उपयुक्त... आप इसके माध्यम से लूप कर सकते हैं और एक विशिष्ट आइटम तक पहुंच सकते हैं। और इसे अपने तरीकों से भी पास करें।

1

यह एक बहुत बुरा विचार है।

  1. यथासंभव वैश्विक चर से बचें। ऐसे कुछ उदाहरण हैं जहां आपको सार्वजनिक, परिवर्तनीय सिंगलटन की आवश्यकता होती है।
  2. बहु-आयामी सरणी के बजाय एक स्पष्ट वस्तु (POCO) का उपयोग करें। उदाहरण के लिए नीचे देखें
  3. इसके बजाय ऑब्जेक्ट को आवश्यकतानुसार स्टोरेज से बनाएं/सहेजें/लोड करें।

    कक्षा नीलामी { सार्वजनिक लंबी आईडी {प्राप्त करें; सेट;} सार्वजनिक स्ट्रिंग ItemName {प्राप्त करें; सेट;} ... }

9

मैं वैश्विक सरणियों का उपयोग करने का सुझाव नहीं है, नहीं है एक सबसे अच्छा अभ्यास है कि तुम क्या आवश्यकता होगी डेटा संग्रह होता है और वहाँ डेटा से ले आप उपयोग करना चाहते , संरचना का उपयोग करना चाहते के बारे में मैं सुझाव है कि आप इस तरह कुछ करने के लिए:

public class Auction 
{ 
      public string auctionID {get; set;} 
      public string itemName {get; set;} 
      public string itemID {get; set;} 
      public string bid {get; set;} 
      public string buyout {get; set;} 
      public int quantity {get; set;} 
} 

और फिर अपने डेटा का उपयोग करने कि विशेष रूप से वस्तु की एक सूची का उपयोग करें।

List<Auction> acutions = new List<Auction>(); 

फिर आप वांछित वस्तुओं को जोड़ या निकाल सकते हैं।

auctions.Add(auction object); 
auctions.remove(auction object); 

या, एक foreach पाश

foreach (Auction item in auctions) 
{ 
// your code to handle items here 
} 
संबंधित मुद्दे