2013-02-26 12 views
9

के साथ बहु-आयामी सरणी को प्रारंभ करने के लिए कैसे मैं -1 के साथ पूर्णांक मानों की 2-आयामी सरणी प्रारंभ करने की कोशिश कर रहा हूं। जब मैं एक नई सरणी बनाता हूं, तो यह स्वचालित रूप से 0. से भरा जाता है। मुझे पता है कि मैं इसे चक्र के लिए 2 के साथ कर सकता हूं, लेकिन मुझे लगता है कि सरणी बनाने के दौरान ऐसा करने का कोई तरीका होना चाहिए (इसलिए मेरे पास नहीं है इसे दो बार जाने के लिए), ताकि 0 की बजाय, प्रदान किया गया मूल्य डाला जाएगा। क्या यह संभव है? यदि सरणी की प्रारंभिक इमारत के दौरान नहीं, तो क्या कोई अन्य समय या कोड बचत तरीका है, या क्या मैं चक्र के लिए 2 के साथ अटक गया हूं?विभिन्न डिफ़ॉल्ट मान

+3

कितना बड़ा इन सरणियों हैं साथ? –

+0

ऐरे आकार उस फ़ंक्शन के इनपुट पर आधारित होता है जो इसे बनाता है, मैं इसका उल्लेख करना भूल गया। प्रत्यक्ष प्रारंभिक प्रश्न से बाहर है। – kovike

उत्तर

11

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

यदि आप jagged array का उपयोग कर रहे हैं, तो आप पहले उप-सरणी को प्रारंभ कर सकते हैं, फिर इन मानों को एक-दूसरे उप-सरणी में कॉपी करने के लिए Array.Copy का उपयोग करें। इसके लिए पहले उप सरणी के माध्यम से एक पुनरावृत्ति की आवश्यकता होगी, और एन-1 बाहरी सरणी के माध्यम से एक लूप, लेकिन कॉपी ऑपरेशन लूप से तेज होगा।

+0

मैं वास्तव में बहुआयामी सरणी का उपयोग कर रहा हूँ। खैर, मुझे लगता है कि मुझे तब 'पुरानेस्कूल' रास्ता जाना होगा। – kovike

15

इस तरह की कोशिश कुछ: int[,] array2D = new int[,] { { -1 }, { -1 }, { -1 }, { -1} };

या आयाम int[,] array2D = new int[4,2] { { -1,-1 }, { -1,-1 }, { -1,-1 }, {-1,-1} };

+4

सुनिश्चित नहीं है कि क्यों -1 - यह छोटे 2 डी सरणी के लिए बिल्कुल मान्य है, और उस मामले में सबसे अच्छा विकल्प है। मेरे द्वारा +1 ... (यदि एरे बड़े हैं, तो यह बहुत तेज़ी से बनाए रखा जा रहा है) –

+0

मेरे जैसे ही, मैं मूल प्रश्न में महत्वपूर्ण विवरण का उल्लेख भूल गया। – kovike

+0

यह ठीक है, @ReedCopsey ने आपके प्रश्न का उत्तर दिया, मुझे लगता है – TravellingGeek

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