2016-04-03 35 views
0

Programlama uzmanıyım ve dizileri öğrenmeye başladım. Beni şaşırtan şey, C# 'daki çok boyutlu bir diziyi başlatmanın yolu. Ve bu, her öğenin koordinatlarını kendim belirtmem çünkü C# bir şekilde yapar.Çok boyutlu diziliş başlatma ile karışıklık C#

Daha özel olarak

, ı bu diziyi başlatmak varsayalım:

string[,] names = { 
{"Deadpool", "Superman", "Spiderman"} 
{"Catwoman", "Batman", "Venom"} 
}; 

elemanının ilk değer koyarak tek boyutlu dizi başlatma C# başlar [0], aynı için de geçerlidir varsayalım göz önüne alındığında çok boyutlu diziler de. Ama her ayrı boyut için aynı şeyi yapmaz mı? Bu doğru olamaz. Çünkü o zaman, "Deadpool" ı, satırın [0] öğesinin üzerine yerleştirir ve daha sonra, ilk sütunun [0] öğesinin üzerine "Catwoman" yerleştirmeye çalışır. Eğer durum buysa, ilk satırın [0] öğesi ilk sütunun [0] öğesiyle verildiğinden, "Catwoman" her ikisi de [0,0] 'da yazılacağı için "Deadpool" un yerini alacaktır. Yine de konsolda her şeyi yazmak için bir foreach kullanarak, her ikisi de görünür. Öyleyse C#, her bir değeri nasıl ve nerede yerleştirir, başka bir boyutun değerinin üzerine yazan bir boyuttan kaçınmak için? Eğer döngü için foreach dönüştürürseniz

+1

Eh ... parantez içine alınmış veri öğelerinin iki grup vardır, bu yüzden yer yok muğlaklık için. Derleyici doğru olanı yapar. –

+0

Stackoverflow'a Hoş Geldiniz. Sadece dizininin içinden geçebilirsin ve göreceksin. Tümü burada belgelenmiştir: https://msdn.microsoft.com/en-us/library/9b9dty7d(v=vs.140).aspx –

cevap

0

bu biraz daha mantıklı Mack olabilir:

static void Main(string[] args) 
     { 
      string[,] names = {{"Deadpool", "Superman", "Spiderman"},{"Catwoman", "Batman", "Venom"}}; 

      for (int index0 = 0; index0 < names.GetLength(0); index0++) 
      { 
       for (int index1 = 0; index1 < names.GetLength(1); index1++) 
       { 
        var name = names[index0, index1]; 
        Console.Write(name); 
       } 
      } 
     } 

Bu temelde foreach perde arkasında ne yaptığını. Bunu aslında başlangıç ​​nasıl çalıştığını öğrenmek istiyorsanız :

How does the Java 'for each' loop work?

How is foreach implemented in C#?

How do foreach loops work in C#?

+0

Oh Görüyorum. Bu örnek, değerleri öğelere yerleştirme yordamının yalnızca ilk boyut için 0'dan başladığını anlamamı sağladı. İkinci boyutun değerleri 1'den başlayarak, ilk sırayı atlayarak "Deadpool" [0,0] ve "Catwoman" [1,0] 'da sona erdi. Teşekkürler! –

+0

Zevklerim - eğer bu soruya cevap verdiyse, lütfen cevabı işaretlemeyi unutmayın. – Wjdavis5

+0

Yaptım, daha fazla bir şey sormama izin ver. Başka bir boyut ekledikçe ve index2 ile ilmek için bir başka, 'var name = names [index0, index1] 'satırını değiştirdiğimde, var ismi = [index0, index1, index2], sadece iki tane ekleyebileceğim bir hata alıyorum. içindeki indeksler []. Neden ? –