मैं दो आयामी स्ट्रिंग सरणी कैसे घोषित कर सकता हूं?


79
string[][] Tablero = new string[3][3];

मुझे जानकारी को सहेजने के लिए एक 3x3 सरणी व्यवस्था की आवश्यकता है। मैं इसे C # में कैसे घोषित करूं?


3
प्रलेखन स्पष्ट रूप से दिखाता है कि यह कैसे करना है: msdn.microsoft.com/en-us/library/9b9dty7d.aspx
Esteban Araya


1
ध्यान दें कि ऊपर दिए लिंक के अनुसार ओपी कोड [] [] (दांतेदार सरणी संरचना) और स्वीकृत उत्तर [,] (बहुआयामी) के बीच अंतर है।
समामेलित करें

जवाबों:


110
string[,] Tablero = new string[3,3];

आप इसे निम्न पंक्ति में सरणी आरंभीकृत सिंटैक्स के साथ उसी रूप में भी लिख सकते हैं:

string[,] Tablero = new string[3, 3] {{"a","b","c"},
                                      {"d","e","f"}, 
                                      {"g","h","i"} };

2
या var tablero = new string[3,3];यदि आप C # 3 या बाद में उपयोग कर रहे हैं
bdukes

9
यदि आप सरणी इनिशियलाइज़र सिंटैक्स का उपयोग करते हैं तो आपको सीमा प्रदान करने की आवश्यकता नहीं है (अर्थात आप बस लिख सकते हैं new string[,])
bdukes

2
आपको बिलकुल भी लिखने की जरूरत नहीं है new string[,]...string [,] Tablero = {{"a","b","c"}, {"d","e","f"}, {"g","h","i"} }
जिम बाल्टर

3
यह स्पष्ट करने के लिए कि पहले 3 में [3, 3] पंक्तियों की संख्या है, दूसरा 3 स्तंभों की संख्या है (सभी को लगता है [3, 3] सिर्फ भ्रमित करने के लिए उठाया है :-))
बट्टेव

54

आप शायद यही चाहते हैं:

string[,] Tablero = new string[3,3];

यह आपको एक मैट्रिक्स जैसा सरणी बनाएगा जहां सभी पंक्तियों की लंबाई समान होगी।

आपके नमूने में सरणी एक तथाकथित दांतेदार सरणी है , अर्थात् सरणियों की एक सरणी जहां तत्व विभिन्न आकार के हो सकते हैं। एक दांतेदार सरणी को एक अलग तरीके से बनाना होगा:

string[][] Tablero = new string[3][];
for (int i = 0; i < Tablero.GetLength(0); i++)
{
    Tablero[i] = new string[3];
}

आप सरणी तत्वों को डेटा के साथ भरने के लिए इनिशियलाइज़र का भी उपयोग कर सकते हैं:

string[,] Tablero = new string[,]
{
    {"1.1","1.2", "1.3"},
    {"2.1","2.2", "2.3"},
    {"3.1", "3.2", "3.3"}
};

और दांतेदार सरणी के मामले में:

string[][] Tablero = new string[][]
{
    new string[] {"1.1","1.2", "1.3"},
    new string[] {"2.1","2.2", "2.3"},
    new string[] {"3.1", "3.2", "3.3"}
};

15

आपने सिर्फ एक दांतेदार सरणी घोषित की है। इस तरह के सरणियों के सभी आयामों के लिए अलग-अलग आकार हो सकते हैं। उदाहरण के लिए:

string[][] jaggedStrings =  {
new string[] {"x","y","z"},
new string[] {"x","y"},
new string[] {"x"}
};

आपके मामले में आपको नियमित सरणी की आवश्यकता है। ऊपर उत्तर देखें। दांतेदार सरणियों के बारे में अधिक


11

मुझे लगता है कि आप इसके लिए देख रहे हैं:

        string[,] Tablero = new string[3,3];

दांतेदार सरणी के लिए सिंटैक्स है:

        string[][] Tablero = new string[3][];
        for (int ix = 0; ix < 3; ++ix) {
            Tablero[ix] = new string[3];
        }

10

C # में 2 प्रकार के बहुआयामी सरणियाँ हैं, जिन्हें कहा जाता है Multidimensionalऔर Jagged

आपके द्वारा किए जा सकने वाले बहुआयामी के लिए:

string [,] मल्टी = नया स्ट्रिंग [3, 3];

दांतेदार सरणी के लिए आपको थोड़ा और कोड लिखना होगा:

string[][] jagged = new string[3][];
            for (int i = 0; i < jagged.Length; i++)
            {
                jagged[i] = new string[3];
            }

संक्षेप में दांतेदार सरणी दोनों तेज है और सहज ज्ञान युक्त वाक्य रचना है। अधिक जानकारी के लिए देखें: यह Stackoverflow प्रश्न


3
दांतेदार मामले में आप इसे सीधे पसंद कर सकते हैं string[][] jagged = { new[] { "a", "b", "c" }, new[] { "d", "e", "f" }, new[] { "g", "h", "i" } }; या var jagged = new[] { new[] { "a", "b", "c" }, new[] { "d", "e", "f" }, new[] { "g", "h", "i" } };
nawfal



6

string[][]है एक दो आयामी सरणी, यह सरणियों की एक सरणी (एक है दांतेदार सरणी )। वह कुछ अलग है।

दो-आयामी सरणी घोषित करने के लिए, इस सिंटैक्स का उपयोग करें:

string[,] tablero = new string[3, 3];

यदि आप वास्तव में दांतेदार सरणी चाहते हैं , तो आपको इसे इस तरह से शुरू करने की आवश्यकता है:

string[][] tablero = new string[][] { new string[3], 
                                      new string[3], 
                                      new string[3] };

6

एक 3x3 (बहुआयामी) सरणी को भी इनिशियलाइज़ किया जा सकता है (आपने पहले ही घोषित कर दिया है) इस तरह:

string[,] Tablero =  {
                        { "a", "b", "c" },
                        { "d", "e", "f" }, 
                        { "g", "h", "i"} 
                     };


@ जॉनसन मुझे देखने में असफल हैं। पूरे प्रकार को अनदेखा करना छोड़ दिया जाता है।
नवफल

1
नहीं, बिलकुल ऐसा ही है।
जॉन सॉन्डर्स

1
@ जॉनसनर्स मैं शुरू करने के लिए एक अलग तरीका सुझा रहा था। बहुत से लोग यह नहीं जानते कि वह सरणी आरंभीकरण के दौरान आकार को छोड़ सकते हैं और यहां तक ​​कि आरएचएस पर भी टाइप कर सकते हैं। बेशक यह वही करता है। चूँकि प्रश्न अधिक है "मैं कैसे घोषित / शुरू करूँ", यह भी एक तरीका है। एरिक के इस जवाब को देखें जिसमें उन्होंने प्रत्येक तकनीक का अलग-अलग उल्लेख किया है।
नवाफल

2
ओह ठीक। मुझे अपने पतन से छुटकारा मिल जाएगा, लेकिन ऐसा लगता है कि यह पहले ही गायब हो गया है।
जॉन सॉन्डर्स

6

जब आप एक बहुआयामी सरणी बनाने की कोशिश कर रहे हैं, तो आपको केवल घोषणा की तरह अल्पविराम जोड़ना होगा:

string[,] tablero = new string[3,3].

3

आप नीचे दिए गए कोड को भी लिख सकते हैं।

Array lbl_array = Array.CreateInstance(typeof(string), i, j);

जहाँ 'i' पंक्तियों की संख्या है और 'j' स्तंभों की संख्या है। 'टाइपोफ़ (..)' विधि का उपयोग करके आप अपने सरणी का प्रकार यानी इंट, स्ट्रिंग, डबल चुन सकते हैं


हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.