2010-04-20 23 views
6

मेरे पास वैश्विक चर int[] है और मैं इसके डेटा को साफ़ करना चाहता हूं और इसे लूप में फिर से भरना चाहता हूं।एक सरणी को साफ़ करने के लिए कैसे करें

सी # में यह कैसे संभव हो सकता है?

+5

आप सी # में एक वैश्विक चर कैसे हो सकती है? –

+0

@rep_movsd यह एक और सवाल है;) lol –

+0

क्या लूप के प्रत्येक पुनरावृत्ति में तत्वों की संख्या बदलती है? कुछ कोड देखना अच्छा होगा। –

उत्तर

9

इसके बजाय सूची का उपयोग करना आसान नहीं होगा।

public List<int> something = new List<int>(); 

और फिर:

something.Add(somevalue); 

और स्पष्ट करने के लिए:

something.Clear(); 
+0

मुझे int से नफरत है []। मुझे सूची पसंद है। +1 –

+11

-1: आपको कोई जानकारी नहीं है कि सूची का उपयोग करना आसान होगा! प्रश्न सरणी के बारे में है। – Adrian

+0

@ एड्रियन: यह संभव है कि ओपी सूची <> से परिचित न हो। यह बहुत अच्छा होगा कि हम बेहतर विकल्प सुझाते हैं। इसमें कुछ भी गलत नहीं है। इस उत्तर के लिए +1। – Nayan

0
int[] x 
    int[] array_of_new_values 

    for(int i = 0 ; i < x.Length && i < array_of_new_values.Length ;i++) 
    { 
     x[i] = array_of_new_values[i]; // this will give x[i] its new value 
    } 

इसे क्यों साफ़ करें? बस नए मान असाइन करें।

+0

मैं कई कारण देख सकता हूं कि आप क्लीन शून्य किए गए सरणी क्यों चाहते हैं, उदाहरण के लिए डिबगिंग, सरणी में जाने वाले डेटा को ओवरराइटिंग डेटा की तुलना में मॉनीटर करना अधिक आसान होगा। – Adrian

+1

मैं कुछ मान बदलता हूं और दूसरा "0" होना चाहिए। मैं इसे इस तरह से कर सकता हूं लेकिन मैं 1 लाइन कोड की तलाश में था। – LIX

4

यह आपकी पोस्ट के लिए सही जवाब नहीं है, लेकिन आप अपनी जरूरत के अनुसार इस तर्क का उपयोग कर सकते हैं। यहाँ एक कोड के टुकड़े से here

using System; 

class ArrayClear 
{ 

    public static void Main() 
    { 
     int[] integers = { 1, 2, 3, 4, 5 }; 
     DumpArray ("Before: ", integers); 
     Array.Clear (integers, 1, 3); 
     DumpArray ("After: ", integers); 
    } 

    public static void DumpArray (string title, int[] a) 
    { 
     Console.Write (title); 
     for (int i = 0; i < a.Length; i++) 
     { 
     Console.Write("[{0}]: {1, -5}", i, a[i]); 
     } 
     Console.WriteLine(); 
    } 
} 

लिया जाता है और इस बात का उत्पादन होता है:

Before: [0]: 1 [1]: 2 [2]: 3 [3]: 4 [4]: 5 
After: [0]: 1 [1]: 0 [2]: 0 [3]: 0 [4]: 5 
19

स्थिर Array.Clear() विधि "गलत पर, शून्य करने के लिए सरणी में तत्वों की एक सीमा निर्धारित करता है, या करने के लिए तत्व प्रकार के आधार पर कुछ भी नहीं "। आप अपने पूरे सरणी साफ़ करना चाहते हैं, तो आप इस विधि का उपयोग एक 0 शुरू सूचकांक के रूप में और myArray.Length लंबाई के रूप में यह प्रदान कर सकता है:

Array.Clear(myArray, 0, myArray.Length); 
+0

यह विधि अक्षरशः सरणी को साफ़ नहीं करती है, लेकिन सरणी में प्रत्येक तत्व के लिए बस 0/false/null सेट करें। –

+0

@ 1_bug संभवतः "समाशोधन" और क्या हो सकता है? – Nyerguds

1

क्यों न सिर्फ नई सरणी बना सकते हैं और मौजूदा सरणी चर के लिए असाइन करें?

x = new int[x.length]; 
+0

क्योंकि इसका मतलब है कि कचरा कलेक्टर के पास अतिरिक्त मेमोरी है जो आप स्मृति में पीछे छोड़ देते हैं। – Nyerguds

0

दो आयामी सरणी के लिए, आप के रूप में bellow करना चाहिए:

Array.Clear(myArray, 0, myArray.GetLength(0)*myArray.GetLength(1)); 
संबंधित मुद्दे