C# Foreach Döngüsü
C#'cılara yeniden merhabalar :)
Önceki C#.Net makalemizde dizilere küçük bir giriş yapmıştık ve nasıl C# dizisi oluşturulur,dizilere nasıl veri eklenir ve
diziden nasıl veri çekilir gibi sorulara cevaplar bulmuştuk.Bu makalemizde ise diziler konusunu biraz daha öğrenip hemen
foreach döngüsünü öğreneceğiz.
Önceki makalelerimizden farklı olarak ve benimde çok uzun zamandır kullanmadığım Windows Console uygulamasını tam da bu makale için kullanmakta fayda var,zira örneklerimizi Windows Form uygulamasıyla kısıtlamayalım değil mi :)
Şimdi Visual Studio'yu açıyor ve yeni bir console projesi oluşturuyoruz:
Windows console projemizi açtığımızda aşağıdaki bir code-behind sayfası karşılıyor bizi:
Yani Windows Form uygulamalarındaki gibi çok görsel birşeyimiz yok,tabi yazılımcı insan her proje tipine kolay adapte
olması için hayatında en az bir kez bile console ortamıyla tanışmış olmalı :)
Yukarıdaki resim tıpkı form uygulamalarındaki gibi main metodunu barındırıyor bunun anlamı form_load eventi yerine program çalışmaya başladığı anda bu metot içerisindeki kodlar çalışacak demektir.
Şimdi diziler konumuza geri dönelim; önceki makalemizde dizi oluşturma biçimlerinden birini görmüştük, C# dizi oluşturma
biçimlerinden birisi de dizinin boyutunu tanımlamadan dizi oluşturabilmektir.Aslında böyle bir durum klasik diziler için
henüz yok ancak elemanları dizinin oluşum esnasında tanımlanan diziler boyutlarını o anda almış sayılırlar.
İşte böyle bir dizi oluşturmak için;
diziTipi[] diziAdi=new diziTipi{ eleman1,eleman2,eleman3,... };
dizi tipini kullanırız.
Bu dizi tipiyle örnek uygulamamızda bir dizi tanımlayalım:
Sözde "boyutsuz dizi" tanımlamamızı gerçekleştirdik ve string tipinde oluşturduğumuz bu diziye meyve isimlerini doldurduk.
Şimdi yapmak istediğimize gelelim, program çalıştığı anda kullanıcı meyvelerin listesini görsün.Bunun için foreach döngüsünü kullanıyoruz, zaten makalemizin asıl konusu da foreach döngüsü ve çalışma şekliydi :)
Foreach döngüsünden kısaca bahsedersek kendisine tanımlanan dizideki elemanlara tek tek ulaşır ve tıpkı for döngüsündeki gibi içerisindeki kodları çalıştırır.
Yapısı ise;
foreach(var item in collection)
{
}
şeklindedir ve "item" sözcüğü yerine istediğiniz sözcüğü yazabilirsiniz.
Yapısı gereği diziden gelebilecek elemanın hangi veri tipinde (int,string,bool..) olduğu bilinmediği için varsayılan olarak "var" (variable-değişken) deyimini kullanır.
var değişken tipini dizinin tipine uygun olarak değiştirebilirsiniz ve biz de string tipindeki diziye uygun olarak string
olarak değiştiriyoruz,tabi bunu yapmak zorunda değilsiniz ve var olarak bırakabilirsniz.
Meyveler dizimizi foreach dizisine tanımlayalım:
Şimdi ise foreach döngüsü her dönüşünde diziden o anda ki gelen elemanı ekrana yazdırması için console sınıfının WriteLine metodunu kullanıyoruz ve bu metot bizden string tipinde veri kullanmamıza izin verdiği için döngüden gelen elemanı herhangi bir değişken tipine convert (dönüşüm) etmeden doğrudan parametre olarak veriyoruz:
Şimdi programı çalıştırmayı deniyoruz ve o da ne! Program çalıştığı anda kapandı.Bunun nedeni console uygulamalarının
kullanıcıyla fazla etkileşim içermesinden kaynaklanıyor.Bu durumda biz console uygulamasının bizden herhangi bir tuşa
basıncaya kadar açık kalmasını sağlamk için ReadKey metodunu kullanacağız,ancak bu metodu foreach döngüsü içerisinde değil dışarısında kullanmamız gerekir.Aksinde her foreach dönüşü esnasında bir tuşa basmadan döngü devam etmeyecektir:
Şimdi programımızı çalıştırıyoruz:
Görüldüğü gibi foreach döngüsü oluşturduğumuz string tipindeki meyveler dizisindeki her elamana ayrı ayrı ulaştı ve ekrana yazdı,artık klavyenizden herhangi bir tuşa basarak console uygulamasını kapatabilirsiniz :)
Peki foreach döngüsü yerine aynı işlemi for döngüsüyle yapamaz mıydık?
Tabiki yapardık bunun için dizideki eleman sayısı kadar for dönüşü yapar ve her dönüş esnasında gelen sayıyı dizinin indexi olarak belirtebiliriz:
Bu şekilde de aynı sonuca ulaşabiliriz,tabi hangisini kullanmak istiyorsanız seçim size ait :)
C# Foreach makalemizin böylece sonuna gelmiş bulunuyoruz,bir sonraki makalemizde görüşmek üzere hoşçakalın.
Projeyi İndir
Önceki C#.Net makalemizde dizilere küçük bir giriş yapmıştık ve nasıl C# dizisi oluşturulur,dizilere nasıl veri eklenir ve
diziden nasıl veri çekilir gibi sorulara cevaplar bulmuştuk.Bu makalemizde ise diziler konusunu biraz daha öğrenip hemen
foreach döngüsünü öğreneceğiz.
Önceki makalelerimizden farklı olarak ve benimde çok uzun zamandır kullanmadığım Windows Console uygulamasını tam da bu makale için kullanmakta fayda var,zira örneklerimizi Windows Form uygulamasıyla kısıtlamayalım değil mi :)
Şimdi Visual Studio'yu açıyor ve yeni bir console projesi oluşturuyoruz:
Windows console projemizi açtığımızda aşağıdaki bir code-behind sayfası karşılıyor bizi:
Yani Windows Form uygulamalarındaki gibi çok görsel birşeyimiz yok,tabi yazılımcı insan her proje tipine kolay adapte
olması için hayatında en az bir kez bile console ortamıyla tanışmış olmalı :)
Yukarıdaki resim tıpkı form uygulamalarındaki gibi main metodunu barındırıyor bunun anlamı form_load eventi yerine program çalışmaya başladığı anda bu metot içerisindeki kodlar çalışacak demektir.
Şimdi diziler konumuza geri dönelim; önceki makalemizde dizi oluşturma biçimlerinden birini görmüştük, C# dizi oluşturma
biçimlerinden birisi de dizinin boyutunu tanımlamadan dizi oluşturabilmektir.Aslında böyle bir durum klasik diziler için
henüz yok ancak elemanları dizinin oluşum esnasında tanımlanan diziler boyutlarını o anda almış sayılırlar.
İşte böyle bir dizi oluşturmak için;
diziTipi[] diziAdi=new diziTipi{ eleman1,eleman2,eleman3,... };
dizi tipini kullanırız.
Bu dizi tipiyle örnek uygulamamızda bir dizi tanımlayalım:
Sözde "boyutsuz dizi" tanımlamamızı gerçekleştirdik ve string tipinde oluşturduğumuz bu diziye meyve isimlerini doldurduk.
Şimdi yapmak istediğimize gelelim, program çalıştığı anda kullanıcı meyvelerin listesini görsün.Bunun için foreach döngüsünü kullanıyoruz, zaten makalemizin asıl konusu da foreach döngüsü ve çalışma şekliydi :)
Foreach döngüsünden kısaca bahsedersek kendisine tanımlanan dizideki elemanlara tek tek ulaşır ve tıpkı for döngüsündeki gibi içerisindeki kodları çalıştırır.
Yapısı ise;
foreach(var item in collection)
{
}
şeklindedir ve "item" sözcüğü yerine istediğiniz sözcüğü yazabilirsiniz.
Yapısı gereği diziden gelebilecek elemanın hangi veri tipinde (int,string,bool..) olduğu bilinmediği için varsayılan olarak "var" (variable-değişken) deyimini kullanır.
var değişken tipini dizinin tipine uygun olarak değiştirebilirsiniz ve biz de string tipindeki diziye uygun olarak string
olarak değiştiriyoruz,tabi bunu yapmak zorunda değilsiniz ve var olarak bırakabilirsniz.
Meyveler dizimizi foreach dizisine tanımlayalım:
Şimdi ise foreach döngüsü her dönüşünde diziden o anda ki gelen elemanı ekrana yazdırması için console sınıfının WriteLine metodunu kullanıyoruz ve bu metot bizden string tipinde veri kullanmamıza izin verdiği için döngüden gelen elemanı herhangi bir değişken tipine convert (dönüşüm) etmeden doğrudan parametre olarak veriyoruz:
Şimdi programı çalıştırmayı deniyoruz ve o da ne! Program çalıştığı anda kapandı.Bunun nedeni console uygulamalarının
kullanıcıyla fazla etkileşim içermesinden kaynaklanıyor.Bu durumda biz console uygulamasının bizden herhangi bir tuşa
basıncaya kadar açık kalmasını sağlamk için ReadKey metodunu kullanacağız,ancak bu metodu foreach döngüsü içerisinde değil dışarısında kullanmamız gerekir.Aksinde her foreach dönüşü esnasında bir tuşa basmadan döngü devam etmeyecektir:
Şimdi programımızı çalıştırıyoruz:
Görüldüğü gibi foreach döngüsü oluşturduğumuz string tipindeki meyveler dizisindeki her elamana ayrı ayrı ulaştı ve ekrana yazdı,artık klavyenizden herhangi bir tuşa basarak console uygulamasını kapatabilirsiniz :)
Peki foreach döngüsü yerine aynı işlemi for döngüsüyle yapamaz mıydık?
Tabiki yapardık bunun için dizideki eleman sayısı kadar for dönüşü yapar ve her dönüş esnasında gelen sayıyı dizinin indexi olarak belirtebiliriz:
Bu şekilde de aynı sonuca ulaşabiliriz,tabi hangisini kullanmak istiyorsanız seçim size ait :)
C# Foreach makalemizin böylece sonuna gelmiş bulunuyoruz,bir sonraki makalemizde görüşmek üzere hoşçakalın.
Projeyi İndir
çok teşekkür ederim..
çok temiz bir anlatım gayet açık ve net teşekkürler. :)
çok teşekkürler. Tam da ihtiyacım olan buydu ;)
Anlatış tarzın, detayların herşeyi açıklamalarına bayıldım emeğine sağlık çok yardımcı oldun bana..