2009-11-27 18 views
7

में किसी सरणी को साफ़ करने के लिए मेरे पास इन्स की एक सरणी है। वे 0 के साथ शुरू करते हैं, फिर वे कुछ मूल्यों से भरे जाते हैं। फिर मैं सभी मानों को 0 पर वापस सेट करना चाहता हूं ताकि मैं इसे फिर से उपयोग कर सकूं, या फिर बस पूरे सरणी को हटा दें ताकि मैं इसे फिर से प्राप्त कर सकूं और सभी 0s की सरणी से शुरू कर सकूं।विज़ुअल सी #

+0

http://stackoverflow.com/questions/1407715/how के संभावित डुप्लिकेट -to-quick-zero-out-an-array –

उत्तर

28

आप Array.Clear कॉल कर सकते हैं:

int[] x = new int[10]; 
for (int i = 0; i < 10; i++) 
{ 
    x[i] = 5; 
} 
Array.Clear(x, 0, x.Length); 

वैकल्पिक रूप से, स्थिति के आधार पर, आप यह स्पष्ट बस के बजाय एक नई सरणी बनाने के लिए मिल सकता है। विशेष रूप से, आपको तब चिंता करने की आवश्यकता नहीं है कि क्या किसी अन्य कोड में अभी भी सरणी का संदर्भ है और पुराने मानों की अपेक्षा है।

मुझे अपने कोड में कभी भी Array.Clear पर कॉल करने की याद नहीं है - यह सिर्फ मेरी आवश्यकता नहीं है।

(बेशक, आप के बारे में वैसे भी सभी मूल्यों को बदलने के लिए कर रहे हैं, आप कर सकते हैं कि पहली सरणी साफ किए बिना।)

+2

कोई भी सरणी *** गैर-जेनेरिक *** 'IList' इंटरफ़ेस को लागू करती है जिसमें 'साफ़' विधि होती है। कह रहा है '((IList) x)। साफ़(); सरणी उदाहरण भी' साफ़ करता है ", हालांकि यह ठीक नहीं है [दस्तावेज] (http://msdn.microsoft.com/en-us/library/bb340970.aspx)। यदि सरणी वास्तव में एक-आयामी और शून्य-अनुक्रमित है, तो यह "जादुई" जेनेरिक 'IList <>' इंटरफ़ेस लागू करता है जिसमें * अन्य * विधि को 'साफ़' भी कहा जाता है। यदि आप कहते हैं '((IList ) x)। क्लीनर();' आपको रन-टाइम अपवाद मिलता है! यह एक सूक्ष्मता है कि 'अरे' में इन दो स्पष्ट इंटरफ़ेस कार्यान्वयन अलग-अलग व्यवहार करते हैं। –

+0

सरणी के संदर्भ में कुछ कोड के बारे में टिप्पणी के लिए धन्यवाद! एस 1 = एस 2 करना; और ऐरे। क्लेयर (एस 2, 0, एस 2 लम्बाई), मैंने जो किया है उसे महसूस करने से पहले मुझे समय लगा। धन्यवाद! – Gyfis

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