C# Metotların Aşırı yüklenmesi (Metot Overloading)

22 August, 2019

undefined

Merhaba arkadaşlar bugün C# dilinde metotların aşırı yüklenme durumunu inceleyeceğiz. Bu arada elimden geldiğince kod yazıp paylaşmak istiyorum. Çünkü bu tür konuların üniversitelerde yalnızca elma , armut veya nesneler üzerinden defalarca anlatılıp kodlama kısmına geldiğinde ise en kolaya kaçıldığı için konu anlaşıldı sanılıyor ama 2 satır kod yazılamıyor. İşte bu sisteme tamamen karşı olduğum için benim bloğumda herhangi bir konu üzerine paylaşım yaptığım durumlarda mümkün olduğunca gerçek olan kodlar üzerinden gitmeye çalışacağım.

Evet lafı fazla uzatmadan kodlarımıza göz atıp incelememizi yapalım.

using System;

namespace AsiriYuklemek
{
    class Program
    {
        static void Main(string[] args)
        {
            topla(61,29);
        }
        static void topla(decimal sayi1,decimal sayi2)
        {
            decimal toplam = sayi1 + sayi2;
            Console.WriteLine(toplam);
        }
        static void topla(string metin1 , string metin2)
        {
            Console.WriteLine(metin1 + " " + metin2);
        }
    }
}

undefined

Yukarıdaki kodları incelediğinizde topla metodunun 2 defa yorumlandığını görmekteyiz. Nedir bu fark ?

ilk metodu incelediğimizde integer türünde parametreleri toplayarak işleme tabi tuttuk 2. sinde ise string.

Uygulamayı çalıştırdığımız zaman ise girilen parametre değerlerine bakar ve baktıktan sonra

Eğer ki bu değerler integer türünde ise 1. metotu devreye girer string türünde ise 2. metodu çalışır.

Kısaca, aynı metodun farklı şekillerde tanımlanarak farklı işleri aynı anda yapabilmesidir.

 

 

 

 C# , C# overloading , C# aşırı yükleme , C# programlama , C# yazılım , C# sınıflar , C# metotların aşırı yüklenmesi , C# metot overloading

 

C# Params kullanımı

22 August, 2019

undefined

Merhaba arkadaşlar bugün sizlerle C# params anahtar kelimesini inceleyeceğiz. 

using System;

namespace ParamsKullanimi
{
    class Program
    {
        static void Main(string[] args)
        {
topla(61, 29, 34, 89); } static void topla(params int[] sayilar) { int toplam = 0; for (int i = 0; i < sayilar.Length; i++) { toplam += sayilar[i]; } Console.WriteLine("Toplam :{0}", toplam); } } }

undefined

Yukarıdaki kodu incelediğimizde topla fonksiyonun içerisine sayılar isminde bir dizi tanımladık ve öncesinde params anahtar kelimesini tanımladık. Kodumuzu derlediğimiz de ekran çıktısında gördüğünüz üzere int türünde sayılar değişkeninin topla metodunun içerisinde bir dizi olarak değilde sanki parametre değeri gibi değişkenlerimizi tanımladık. Kısacası params ifadesi belirtmiş olduğumuz değerleri diziye çevirir.

 

 Tags: C# params , C# params kullanımı , C# ile params ifadesi , params , params kullanımı , C# params metotu , C# params ifadeler , C# params example , C# params uygulamaları , C# params örnekleri

C# Ref ve Out Kullanımı

21 August, 2019

undefined

Merhaba arkadaşlar bugün sizlerle C# dilinde ref ve out anahtar kelimelerini yazacağımız kodlar üzerinden göreceğiz.

Öncelikle basit bir örnek yapalım daha sonrasında bu örnek üzerinden çıkarımlarımızı yapalım.

Ref:

using System;

namespace RefOutKullanimi
{
    class Program
    {
        static void arttirmaIslemi(int count)
        {
            count++;
        }
        static void Main(string[] args)
        {
            int count = 10;
            arttirmaIslemi(count);
            Console.WriteLine(count);
            Console.Read();
        }
    }
}

undefined

Evet arkadaşlar yukarıdaki kodu incelediğimiz zaman bizlere arttirmaIslemi(count); işleminden sonra Console ekranında okunan değer 10 olacaktır. Çünkü arttirmaIslemi(count); fonksiyonun içerisindeki arttırma operatörü int count = 10; üzerine etki etmez. Çünkü stack bölgesine çıkan değerler her defasında kopyalanarak devam edeceğinden birbirlerini etki etmezler. 

Tam olarak burada ref ve out anahtar kelimeleri devreye giriyor. Aşağıdaki kodu inceleyelim.

using System;

namespace RefOutKullanimi
{
    class Program
    {
        static void arttirmaIslemi(ref int count)
        {
            count++;
        }
        static void Main(string[] args)
        {
            int count = 10;
            arttirmaIslemi(ref count);
            Console.WriteLine(count);
            Console.Read();
        }
    }
}

undefined

Yukarıdaki kodu incelediğimizde ekran çıktısı 11 olacaktır. Sebebi ise arttirmaIslemi(ref count); ref anahtar kelimesi kullandığımız için fonksiyon içerisindeki değer bu sefer kendini stack bölgesinde değil heap bölgesinde görür. ve int ile stack bölgesinde oluşturduğumuz değeri heap bölgesine taşır ve değerimiz 11 olur.

Eğer ki dosylarım bu kısımda zorlandıysanız C# Heap and Stack durumlarını araştırıp anlamanız bu ve bundan sonraki C# konularında sizi çok büyük yüklerden kurtaracaktır. 

Out:

using System;

namespace RefOutKullanimi
{
    class Program
    {
        static void arttirmaIslemi(out int count)
        {
            count = 10;
            count++;
        }
        static void Main(string[] args)
        {
            int count ;
            arttirmaIslemi(out count);
            Console.WriteLine(count);
            Console.Read();
        }
    }
}

Out anahtar kelimesi eski .Net framework versiyonlarında bir fark vardı oda Biz değer verdiğimiz int count değişkenine herhangi bir değer ataması yapmadığımız zaman programımız hata veriyordu. .net framework 7.0 ile beraber bu sorun ortadan kalkmıştır.

Heap and Stack:

undefined

 

 

 

 

C# Ortalama Hesaplama

20 August, 2019

undefined

Merhaba arkadaşlar bugün sizlere C# kodlari ile kullanıcıdan isim, soyisim ve 3 adet decimal veri alıp aldığımız verileri Console ekranımızda gösterdiğimiz ufak bir uygulama yaptım umarım işinize yarar ;)

Kodlarımız:

NotHesapla Clas'ı

using System;

namespace NotHesapla
{
    class Program
    {
        static void Main(string[] args)
        {
            string ogrenciAd = string.Empty;
            string ogrenciSoyad = string.Empty;
            decimal not1 = 0;
            decimal not2 = 0;
            decimal not3 = 0;
            decimal ortalama = 0;
            Console.WriteLine("Merhaba Ortalamasını hesaplamak istediğiniz öğrencinin bilgilerini giriniz.");

            Console.Write("Ad :");
            ogrenciAd = Console.ReadLine();

            Console.Write("Soyad :");
            ogrenciSoyad = Console.ReadLine();

            Console.Write("Not 1:");
            not1 = decimal.Parse(Console.ReadLine());

            Console.Write("Not 2:");
            not2 = decimal.Parse(Console.ReadLine());

            Console.Write("Not 3:");
            not3 = decimal.Parse(Console.ReadLine());

            Ogrenci o = new Ogrenci();
            o.ogrenciNotHesapla(ogrenciAd, ogrenciSoyad, not1, not2, not3);

        }
    }
}

Ogrenci() Clas'ı

using System;

namespace NotHesapla
{
   public class Ogrenci
    {
        public void ogrenciNotHesapla(string ad, string soyad , decimal not1 , decimal not2 , decimal not3)
        {
            Console.WriteLine("Ogrencinin Bilgileri Aşağıdaki gibidir.");
            Console.WriteLine("Ad Soyad : {0} {1}", ad, soyad);
            decimal ortalama = (not1 + not2 + not3) / 3;
            if (ortalama < 45)
            {
                Console.WriteLine("Ortalama değeriniz : {0} - Kaldınız", ortalama);

            }
            else
            {
                Console.WriteLine("Ortalama değeriniz : {0} - Geçtiniz", ortalama);
            }
        }
    }
}

Ekran Çıktısı:

 undefined

 

C# using

20 August, 2019

undefined

Using bir kütüphane dosyasını uygulamamıza içerisine eklemektir. Kodlar ile beraber anlatmaya çalışalım.

Şimdi öncelikle bir using kütüphanesinden yararlanmadan ekrana Merhaba Dünya Yazdıralım.

namespace UsingKullanimi
{
    class Program
    {
        static void Main(string[] args)
        {
            System.Console.Write("Merhaba Dünya");
        }
    }
}

Evet Arkadaşlar ekrana yazdırdığımız Console metodunu System kütüphanesinin içerisinden '.' ile çağırıyoruz.

Şimdi aynı kodu kütüphane eklediğimizde çağıralım. Tabi burada tek bir örnek üzerinde durduk ama System kütüphanesinin içerisinde birden fazla metod bulundurduğunu gözden kaçırmayalım. Yani kütüphane kullanarak her defasında System. ile çağırmamız gerekmeyecek.

using System;

namespace UsingKullanimi
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.Write("Merhaba Dünya");
        }
    }
}

 

C# Stack

19 August, 2019

undefined

C # Stack(yığın) nedir?


Stack(Yığın), ilk giren ilk çıkar (LIFO) konseptini temsil eden özel bir koleksiyondur. İlk önce LIFO'yu anlamak için bir örnek alalım. Her kitabın birbirinin üzerinde tuttuğu bir kitap stack(yığın)ı hayal edin.

Kitaplarda ilk giren ilk kavramı, kitap stack(yığın)dan yalnızca en üstteki kitabın kaldırılabileceği anlamına gelir. Bir kitabı aralarından kaldırmak mümkün değildir, çünkü o zaman stack(yığın)ın ayarını bozabilir.

Dolayısıyla C # 'da, stack(yığın) aynı şekilde çalışır. Öğeler üst üste stack(yığın)a eklenir. Stack(Yığın)a bir eleman ekleme işlemine Push işlemi denir. Bir öğeyi stack(yığın)dan kaldırmak için, stack(yığın)ın en üstündeki öğeyi de kaldırabilirsiniz. Bu işlem pop olarak bilinir.

Yığın koleksiyonu için mevcut işlemlere daha ayrıntılı bir şekilde bakalım.

Stack(Yığın) Nesnesi

Stack(Yığın) Veri türü yardımı ile bir yığın oluşturulur. "New" anahtar sözcüğü bir Stack nesnesi oluşturmak için kullanılır. Nesne daha sonra st değişkenine atanır.

Stack st = new Stack()

Stack(Yığın) Eleman Ekleme

Push yöntemi stack(yığın)a bir eleman eklemek için kullanılır. İfadenin genel sözdizimi aşağıda verilmiştir.

Stack.push (eleman)

Stack(Yığın) Eleman Çıkarma

Pop yöntemi, bir öğeyi yığından kaldırmak için kullanılır. Pop işlemi stack(yığın)ın en üst elemanını döndürür. İfadenin genel sözdizimi aşağıda verilmiştir.

 Stack.pop ()

Count

Bu özellik, Stack(Yığın) içindeki öğelerin sayısını almak için kullanılır. Aşağıda bu ifadenin genel sözdizimi bulunmaktadır.

Stack.Count

Contains

Bu yöntem, Stack(Yığın) içinde bir eleman olup olmadığını görmek için kullanılır. Aşağıda bu ifadenin genel sözdizimi bulunmaktadır. Öğe varsa, deyim true, aksi takdirde false değerini döndürür.

Stack.Contains (eleman)

 

Newer posts → Home ← Older posts