C# Dizi Eğitimi: Oluşturma, Bildirme, Başlatma

⚡ Akıllı Özet

C# dizileri, aynı veri türünü paylaşan sabit boyutlu bir eleman koleksiyonunu tek bir değişken adı altında saklar. Her eleman sıfır tabanlı bir indekste yer alır, bu nedenle değerlerin bildirilmesi, başlatılması ve erişilmesi hızlı ve tahmin edilebilir olur.

  • 📌 Tanım: Bir dizi, tek bir değişken aracılığıyla erişilen indekslenmiş konumlarda aynı türden birden fazla değer tutar.
  • beyanı: Bir veri türü, ardından köşeli parantezler ve bir isim, örneğin Int32[] values ​​gibi bir dizi tanımlar.
  • 🔢 Başlatma: Yeni anahtar kelime boyutu belirler, ardından her indeks values[0]=1 gibi bir değer alır.
  • 🔍 erişim: Sıfır tabanlı indeksleme herhangi bir öğeyi okur veya yazar, bu nedenle ilk öğe values[0]'dır ve sayma 0'dan başlar.
  • 🔁 yineleme: `foreach` döngüsü, dizin kullanmadan her öğeyi tek tek inceler; bu da büyük dizilerde aralık dışı hataların önüne geçer.
  • 🤖 Yapay zeka yardımı: GitHub Copilot, dizi tabanlı şablonlar oluştururken, ML.NET sayısal dizileri makine öğrenimi modelleri için özellik olarak yükler.

C# Dizileri

C#'ta Diziler nedir?

Dizi, bir koleksiyonu veya bir dizi öğeyi depolamak için kullanılır. Bu elemanlar aynı tipte olacaktır.

Örneğin, bir Tamsayı değer diziniz varsa, dizi [1, 2, 3, 4] gibi bir değer koleksiyonu olabilir. Burada dizideki eleman sayısı 4'tür.

Aynı türdeki değerlerin bir koleksiyonunu depolamak istediğinizde diziler kullanışlıdır. Yani bir bildirimde bulunmak yerine değişken her öğe için yalnızca bir değişken bildirebilirsiniz.

Bu değişken, dizinin elemanlarının saklanmasından sorumlu olacak bir diziye veya eleman listesine işaret edecektir.

C#'ta dizilerle nasıl çalışabileceğimize bakalım. Örneğimizde bir Tamsayılar dizisi bildireceğiz ve onlarla buna göre çalışacağız.

Aşağıdaki kodun tamamının Program.cs dosyasına yapıldığını unutmayın.

) 1 Adım Bir dizi bildirmek – İlk adım bir dizi bildirmektir. Aşağıdaki kod örneğiyle bunu nasıl başarabileceğimizi görelim.

C#'ta diziler

Code Açıklama:-

  1. İlk kısım, veri tipi. Dizide kullanılan öğelerin türünü belirtir. Yani bizim durumumuzda bir Tamsayılar dizisi yaratıyoruz.
  2. Dizinin sıralamasını belirten ikinci kısım [ ]. (Sıra, dizinin içereceği öğe sayısını belirten bir yer tutucudur)
  3. Sonraki, bizim durumumuzda 'değerler' olan dizinin adıdır. Yeşil dalgalı bir alt çizgi gördüğünüzü unutmayın, bu konuda endişelenmeyin. Bu sadece .Net'in bir dizi bildirdiğinizi ancak onu hiçbir yerde kullanmadığınızı söylemesidir.

) 2 Adım Bir sonraki adım diziyi başlatmaktır. Burada dizinin tutacağı değer sayısını belirteceğiz. Ayrıca dizinin her elemanına değer atayacağız.

C#'ta diziler

Code Açıklama:-

  1. Öncelikle dizinin tutacağı eleman sayısını 3 olarak belirliyoruz. Yani köşeli parantez içerisinde dizinin 3 eleman tutacağını söylüyoruz.
  2. Ardından dizinin her elemanına değer atıyoruz. Bunu, değişken adını + dizideki indeks konumunu belirterek yapabiliriz. Yani values[0], dizinin ilk konumuna bir değer depoladığımız anlamına gelir. Benzer şekilde, ikinci konuma erişmek için values[1] gösterimini kullanırız ve bu şekilde devam eder.

not: – Dizilerde dizin konumu 0'dan başlar.

) 3 Adım Şimdi dizinin tek tek öğelerini Konsolda görüntüleyelim. Bunu başarmak için aşağıdaki kodu ekleyelim.

C#'ta diziler

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DemoApplication
{
 class Program
 {
  static void Main(string[] args) 
  {
   Int32[] value;
   value=new Int32[3];
   
   value[0]=1;
   value[1]=2;
   value[2]=3;
   
   Console.WriteLine(value[0]);
   Console.WriteLine(value[1]);
   Console.WriteLine(value[2]);
    
   Console.ReadKey(); 
  }
 }
}

Code Açıklama:-

Bu, öğenin her değerini konsola göndermek için Console.WriteLine yöntemini kullandığımız basit kısımdır.

Yine, her bir öğeye dizin konumuyla birlikte dizi değişkeni adının yardımıyla eriştiğimizi unutmayın.

Yukarıdaki kod düzgün bir şekilde girilip program çalıştırıldığında aşağıdaki çıktı görüntülenecektir.

Çıktı:

C#'ta diziler

Çıktıdan, dizinin tüm değerlerinin Konsolda görüntülendiğini görebilirsiniz.

C#'ta foreach kullanarak bir diziyi nasıl döngüye alabilirsiniz?

Her öğeyi indeksine göre okumak işe yarar, ancak bir dizi çok sayıda değer içerdiğinde zahmetli hale gelir. `foreach` döngüsü, bir dizinin her öğesini sırayla ziyaret etmenin daha temiz bir yolunu sunar. tracKendinize bir indeks değişkeni atayın.

`foreach` döngüsü, dizideki her öğeyi tek tek alır ve bir döngü değişkenine kopyalar. Daha sonra bu değişkeni döngü gövdesi içinde kullanırsınız. Döngü son öğede otomatik olarak durduğu için, `foreach` dizinin sonundan sonra okuma riskini ortadan kaldırır.

using System;
namespace DemoApplication
{
 class Program
 {
  static void Main(string[] args)
  {
   Int32[] values = new Int32[3] {1, 2, 3};
   foreach (Int32 item in values)
   {
    Console.WriteLine(item);
   }
   Console.ReadKey();
  }
 }
}

Yukarıdaki örnek, üç tamsayıdan oluşan bir diziyi tanımlayıp başlatıyor ve ardından foreach döngüsüyle bu diziyi dolaşıyor. Her geçişte değişkeni değiştiriyor. madde Sonraki değeri alır ve Console.WriteLine ile yazdırır. Çıktı, ayrı satırlarda 1, 2 ve 3 sayılarıdır.

Dizilerle foreach döngüsü kullanırken hatırlamanız gereken önemli noktalar:

  • Döngü değişkeni salt okunur olduğundan, foreach döngüsü değerleri yerinde değiştirmek yerine okumak için daha uygundur.
  • Look sırasında öğeleri değiştirmek içinpingBunun yerine, indeks içeren bir for döngüsü kullanın.
  • foreach döngüsü tek boyutlu diziler, çok boyutlu diziler ve yinelemeyi destekleyen her türlü koleksiyonla çalışır.

C# Çok Boyutlu Diziler

Şimdiye kadar gösterilen diziler tek boyutludur, yani basit bir değer listesi depolarlar. C# ayrıca, öğeleri satır ve sütunlardan oluşan bir ızgarada düzenleyen çok boyutlu dizileri de destekler. İki boyutlu dizi en yaygın biçimdir ve matrisler, oyun tahtaları ve tablolar gibi veriler için uygundur.

Köşeli parantezlerin içine virgül koyarak iki boyutlu bir dizi tanımlarsınız. Her ek virgül bir boyut daha ekler, bu nedenle int[,] iki boyutlu, int[,,] ise üç boyutludur. Elemanlara her boyut için bir indeks ile ulaşılır.

using System;
namespace DemoApplication
{
 class Program
 {
  static void Main(string[] args)
  {
   int[,] matrix = new int[2, 2] { {1, 2}, {3, 4} };
   Console.WriteLine(matrix[0, 0]);
   Console.WriteLine(matrix[1, 1]);
   Console.ReadKey();
  }
 }
}

Burada matris dizisi iki satır ve iki sütundan oluşmaktadır. matrix[0, 0] elemanı 1 değerini, matrix[1, 1] elemanı ise 4 değerini döndürür. Boyut sayısı dizi tanımlanırken sabitlenirken, her boyutun büyüklüğü dizi oluşturulurken belirlenir.

C# Düzensiz Diziler

Düzensiz dizi, elemanları kendileri de dizi olan bir dizidir. Dikdörtgen çok boyutlu bir dizinin aksine, her iç dizinin farklı bir uzunluğu olabilir; bu nedenle düzensiz diziye genellikle diziler dizisi denir. Bu esneklik, satırların doğal olarak farklı sayıda değer içermesi durumunda faydalıdır.

İki köşeli parantez kümesi kullanarak düzensiz bir dizi tanımlarsınız, ardından her iç diziyi ayrı ayrı oluşturursunuz. Aşağıdaki örnek, ilk satırda üç değer ve ikinci satırda iki değer içeren düzensiz bir dizi oluşturur.

using System;
namespace DemoApplication
{
 class Program
 {
  static void Main(string[] args)
  {
   int[][] jagged = new int[2][];
   jagged[0] = new int[] {1, 2, 3};
   jagged[1] = new int[] {4, 5};
   Console.WriteLine(jagged[0][2]);
   Console.WriteLine(jagged[1][1]);
   Console.ReadKey();
  }
 }
}

jagged[0][2] ifadesi birinci satırın üçüncü elemanını, yani 3'ü okur ve jagged[1][1] ifadesi ikinci satırın ikinci elemanını, yani 5'i okur. Her satır ayrı bir dizi olduğundan, düzensiz diziler satır uzunlukları değiştiğinde belleği verimli kullanır, ancak her iç diziyi başlatmak için fazladan bir adıma ihtiyaç duyarlar.

SSS

`Length` özelliği, C# dizisindeki toplam eleman sayısını döndürür. Örneğin, `values.Length` üç elemanlı bir dizi için 3 değerini verir. Çok boyutlu diziler için `GetLength(dimension)` her bir boyutun boyutunu döndürür.

AC# dizilerinin boyutu oluşturulurken sabitlenirken, listeler dinamik olarak büyür ve küçülür. Diziler sabit veriler için daha hızlıdır ve daha az ek yük kullanır, oysa listeler çalışma zamanında eleman sayısı değişen koleksiyonlar için uygundur.

Standart bir C# dizisi, tek bir tanımlanmış türdeki öğeleri saklar, bu nedenle farklı türlerin karıştırılmasına izin verilmez. Farklı türleri tutmak için, bir object[] dizisi tanımlayın veya ArrayList gibi bir koleksiyon kullanın; ancak her ikisi de derleme zamanı tür güvenliğinden ödün verir.

Statik Array.Sort metodu, bir C# dizisinin elemanlarını yerinde artan sırada düzenler. Diziyi Array.Sort(values) metoduna iletin ve Array'i kullanın.Reverse Sonrasında azalan düzen için sıralama yapılır. Sıralama, sayılar, metinler ve diğer benzer türler üzerinde çalışır.

Array.Copy yöntemi bir dizideki belirli bir eleman aralığını başka bir diziye kopyalarken, Clone yöntemi tüm dizinin sığ bir kopyasını oluşturur. Bir dizi değişkenini başka bir diziye atamak yalnızca referansı kopyalar, altta yatan elemanları kopyalamaz.

Bir IndexOutOfRangeException hatası, kodun üç elemanlı bir dizide values[5] gibi mevcut olmayan bir dizi konumuna erişmeye çalışması durumunda oluşur. C# dizileri sıfır tabanlı olduğundan, geçerli indeksler 0'dan Uzunluk eksi bire kadar uzanır. Her zaman önce indeksi doğrulayın.

Evet. GitHub Copilot, Visual Studio içindeki bir yorumdan veya yöntem adından dizi bildirimleri, başlatma ve döngü mantığı önerileri sunar. VS Code. RevCopilot'un bir eksik değer ve aralık dışı hatalara yol açabileceği için, doğru boyutlandırma ve indeks sınırları için her öneriyi inceleyin.

ML.NET, özellik vektörlerini ve model girdilerini genellikle float[] dizileri olmak üzere C# dizileri olarak temsil eder. Eğitim verileri dizilere veya aralıklara yüklenir ve tahminler puan dizileri döndürür. Dizilerin sabit boyutu ve hızlı indeksleme özelliği, onları makine öğrenimi işlem hatları için verimli hale getirir.

Bu yazıyı şu şekilde özetleyin: