Son Haberler
Anasayfa / Yazılım / C# / foreach Kullanımı

foreach Kullanımı

foreach bir dizinin içindeki tüm elemanları veya bir koleksiyon içinde tüm elemanların içinde dönebilmek için kullanılır. Yani for gibi döngü komutudur ama çalışma prensibi for’dan farklıdır. Bu yazımda foreach’eçok detaylı değinmeyeceğim ancak basit bir şekilde nasıl kullanılır anlatmak istiyorum.

Syntax olarak; foreach (değişkenTipi ve adı in DiziAd) seklinde bir kullanımı söz konusudur.

Değişken tipi ve adı kısmı örnek olarak int tipinde bir sayı olabilir. int sayi gibi yani. DiziAd ise dizimizin adı zaten. Tabi foreach kullanırken yinelenecek değişken tipi dizimizin içindeki elemanların veri tipi ile tutarlı olmalıdır. Şimdi şöyle bir basit örnek yapalım. Bir dizimiz olsun, bu dizi içinde öğrenci notları bulunsun. Bu öğrenci notlarının toplamını foreach döngüsü ile dizideki her bir eleman değerini okuyarak bulalım. Şimdi dizim içindeki tüm elemanlar int tipinde olacak, dolayısı ile benim foreach döngüsünde kullanacağım yinelenecek değişken tipimde int olacak. Foreach ile dizim içindeki tüm elemanları döneceğiz. Örnek basit bir örnek olduğu için console uygulaması açıyorum ve burda kodlarımı yazıyorum.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication21
{
    class Program
    {
        static void Main(string[] args)
        {
            //dizimi oluşturdum
            int[] dizi = {100, 32, 56, 89, 67, 87, 90, 45, 34, 23, 98, 65, 82, 31, 97};
            //toplamayı toplam değişkenimde tutucam, ilk değerim 0
            int toplam = 0;
            //foreach döngüsü ile dizi içinde dönüyorum ve her sayi değerni toplam değişkenim
            //ile topluyorum
            foreach (int sayi in dizi)
            {
                toplam += sayi;
            }
            //ekrana yazdırıyorum
            Console.WriteLine("Tüm notların toplamı: {0}", toplam);
            Console.ReadLine();
        }
    }
}

Sonuç olarak kodlarımızı çalıştırdığımızda sonucumuzu görebiliriz.

2014032601

Foreach döngüsü bir çok durumda for döngüsü yerine kullanılabilir bir yapıya sahiptir ve for döngüsü gibi döngünün bir sayaç değeri tutma gereksinimine ihtiyacı yoktur.Yani bir dizi içindeki elemanların değerlerini toplama ilemi yaptığımızda o elemanların değerleri bizim için yeterlidir, hangi elemanda olduğumuz bilgisine ihtiyaç duymadan işlemimizi yaparız.

Çok detaya girmeyeceğim ama foreach demişken az biraz bahsetmeden geçmek olmaz. Visual Studio 2010 ile birlikte biz foreach döngülerinde var tipinde değişken ile birlikte bu yapımızı kullanabiliyoruz. Bu tip değişkenlere global olarak “Implicitly Typed Local Variables” denmekte. Türkçe’ye çevirirsek Örtülü (saklı) yazılmış yerel değişkenler. Peki ne demek bu? Az biraz açalım konuyu.

Değişkenleri tanımlarken eğer var tipinde keyword kullanıyorsam aslında Implicitly Typed Local Variables değişkenlerden yararlanıyorum demektir. Şöyle örnekleyelim;

var a = 3;

gibi bir tanımlama da derleyicim bu değişkeni var olarak okur ama integer bir değişken olarak kabul eder. Çünkü tüm pozitif tam sayılar int olabilirler.

Ama diyelim ki,

var a = -150,34

yazdım. Bu sefer derleyicim var olarak okur ama bu değeri double olarak kabul eder.

Ayrıca var tipimi kontrolün tamamında da kullanabilirim. Örnek bir for döngüsü;

for ( int sayac = 1; sayac < 100; sayac++ )

şeklinde kullanabilirim. Birde aynı şekilde var tipi için yazalım.

for ( var sayac = 1; sayac < 100; sayac++ )

Şimdi burada foreach döngüsündeki var değişkenim int olarak kabul edilir, çünkü 1’den 100’e kadar olan tüm sayılar (birer birer artarak gittiği için) tamsayıdır.

Diyelim ki int tipinde değerlerden oluşan bir dizim var, bunun için foreach döngüsünü aşağıdaki şekilde yazabilirim.

foreach ( int sayi in Dizi )

Aynısını var tipi değişken için yazarsak;

foreach ( var sayi in Dizi )

Dolayısı ile dizimdeki her eleman int tipinde olduğu için burdaki var değişkeni ile elde ettiğim her değerde aslında int tipinde değerdir.

Bu tipteki değişkenler belirttiğim gibi Visual C# 2010 özelliklerindendir ve aynı zamanda Language Integrated Query (LINQ) desteklemektedir.

Implicitly Typed Local Variables tipindeki değişkenler aynı zamanda dizi oluşturmak içinde kullanılabilir. Örnek olarak; aşağıdaki kod ile aslında int tipinde bir dizi oluşturabiliriz.

var dizi = new[] { 67, 54, 90, 34, 89, 23, 86, 32, 16, 49 };

burada ayrıca dikkat ederseniz, dizimi oluştururken new keywordunu kullandım ve new’den sonra köşeli parantezlerimi koydum. Dizi oluştururken bu şekilde de dizi oluşturulabilir.

Bir yorum

  1. Çok teşekkür Ederim hocam.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir