C# dilinde en zor dizi uygulamalarından biri, iç içe geçmiş çok boyutlu dizilerdir. Bu tür dizilerde, her boyutun farklı bir uzunluğu olabilir ve dizi elemanlarına erişmek oldukça karmaşık hale gelebilir.
Örneğin, 3 boyutlu bir dizi içerisindeki bir elemana erişmek için aşağıdaki kodu kullanabilirsiniz:
csharp
int[,,] threeDimensionalArray = new int[3, 4, 5];
int value = threeDimensionalArray[1, 2, 3];
Bu kod, threeDimensionalArray adında 3 boyutlu bir dizi oluşturur. Dizinin ilk boyutu 3 elemana, ikinci boyutu 4 elemana ve üçüncü boyutu 5 elemana sahiptir. Sonrasında, value adında bir değişkene, dizinin 1. boyutunda 2. eleman, 2. boyutunda 3. eleman ve 3. boyutunda 4. elemanındaki değeri atar.
Bir başka zor dizi uygulaması ise, dizinin boyutlarının çalışma zamanında belirlenmesidir. Bu durumda, System.Array sınıfını kullanarak dinamik olarak boyutları ayarlayabilirsiniz. Örneğin:
csharp
int[] dimensions = new int[] { 2, 3, 4 };
Array dynamicArray = Array.CreateInstance(typeof(int), dimensions);
int value = (int)dynamicArray.GetValue(1, 2, 3);
Bu kod, dimensions adında bir boyut listesi oluşturur ve bu boyutları kullanarak dynamicArray adında bir dizi oluşturur. Dizi, 2 elemanlı ilk boyut, 3 elemanlı ikinci boyut ve 4 elemanlı üçüncü boyut ile oluşturulur.
Sonrasında, value adında bir değişkene, dizinin 1. boyutunda 2. eleman, 2. boyutunda 3. eleman ve 3. boyutunda 4. elemanındaki değeri atar. GetValue metodu, dizinin boyutlarına göre değişen sayıda argüman kabul eder ve bu argümanlar, istenen elemanın dizinin hangi koordinatlarına denk geldiğini belirler.