2011-02-23 12 views
13

ऐरे। क्लेयर() डिफ़ॉल्ट मान (पूर्णांक के लिए शून्य) के साथ सरणी भरता है, मैं उदाहरण के लिए -1 का उपयोग करना चाहता हूं।मैं एक विशिष्ट मूल्य के साथ एक सरणी को जल्दी कैसे भरूं?

धन्यवाद।

+2

इस सवाल को प्रभावी ढंग से एक ही बात पूछता है (वहाँ के बाद से सी # के बारे में कुछ भी विशिष्ट नहीं है): [एक मूल्य के साथ एक सी # सरणी को पॉप्युलेट/तत्काल कैसे करें?] (http://stackoverflow.com/q/1014005/145173) –

+0

हां, उपर्युक्त लिंक देखें (विशेष रूप से http: //stackoverflow.com/a/19727083/20 32514) क्योंकि यहां जवाब ('एन्यूमेरेबल.रिपेट' और 'के लिए सरल' का उपयोग करके) "त्वरित" के रूप में योग्य नहीं हैं। बाइट एरे के लिए, http://stackoverflow.com/a/25808955/2032514 – 0xF

उत्तर

16

अन्य तरीका है:

int[] arr = Enumerable.Repeat(-1, 10).ToArray(); 
Console.WriteLine(string.Join(",",arr)); 
+0

+1 देखें: मुझे इसे अपने उत्तर से अधिक पसंद है। –

+1

यह कोड की मात्रा के संदर्भ में कुशल है जो लिखा जाना चाहिए। लेकिन मुझे विश्वास है कि यह एक साधारण पाश में परिणाम। मुझे समझ में नहीं आता कि क्यों 'बफर' कक्षा में कुछ प्रकार की भरने की विधि नहीं है। –

+3

न केवल 'एन्यूमेरेबल.रिपेट' का उपयोग करके प्रत्येक तत्व के माध्यम से .NET स्तर (अर्थात् प्रत्येक पहुंच के लिए सरणी सीमा जांच) पर पुनरावृत्ति की आवश्यकता होती है, 'ToArray' को' IENumerable' के आकार को नहीं पता है, इसलिए इसे अनुमान लगाना है सरणी आकार के रूप में। इसका मतलब है कि हर बार 'ToArray' के बफर पार हो जाने के साथ ही आपको ट्रिम के अंत में एक और आवंटन सरणी आवंटन मिलेगा। –

3

मुझे इस तरह की विधि से अवगत नहीं है। आप एक अपने आप को लिख सकता है, हालांकि:

public static void Init<T>(this T[] array, T value) 
{ 
    for(int i=0; i < array.Length; ++i) 
    { 
     array[i] = value; 
    } 
} 

आप इसे इस तरह कॉल कर सकते हैं:

int[] myArray = new int[5]; 
myArray.Init(-1); 
संबंधित मुद्दे