C# Programlamada Kullanılan Önemli Anahtar Kelimeler ve Kullanımları

post-thumb

Anahtar Kelime Grupları:

  • Sınıf ve Nesneler (Class and Objects):

    • class: Bir sınıfı tanımlar.
    • new: Yeni bir nesne örneği oluşturur.
    • this: Mevcut nesneyi temsil eder.
  • Soyutlama (Abstraction):

    • abstract: Soyut sınıfları tanımlar.
    • interface: Arayüzleri tanımlar.
    • sealed: Miras alınmasını engeller.
  • Erişim Kontrolü (Access Modifiers):

    • public: Her yerden erişilebilir.
    • private: Sadece içeride erişilebilir.
    • protected: Türetilmiş sınıflardan erişilebilir.
    • internal: Mevcut derlemeden erişilebilir.
  • Değişkenler ve Referanslar (Variables and References):

    • var: Türü derleyiciye bırakır.
    • const: Sabit değerler tanımlar.
    • readonly: Salt okunur alanlar tanımlar.
  • Değer Türleri (Value Types): 
    • struct: Değer türü olan yapıları tanımlar.
    • enum: Numaralandırma türlerini (enumerations) tanımlar.
    • volatile: Değişkenin derleyici tarafından optimize edilmemesini sağlar.
  • İstisna İşleme (Exception Handling): 
    • try, catch, finally: İstisnaları işler.
    • throw: İstisnaları fırlatır.
  • Aynı Anda Çalışma (Multithreading):

    • asyncawait: Asenkron işlemleri yönetir.
    • delegate, event: Olay işleme ve delegeleri kullanır.
  • Kaynak Yönetimi:

    • using: Kaynakları otomatik olarak temizler.
    • IDisposable: Temizlenmesi gereken nesneler için arabirim.
  • Metotlar ve Fonksiyonlar (Methods and Functions):

    • params: Bir metoda değişken sayıda argüman geçirmek için kullanılır.
    • yield: İterasyonu (döngüyü) yönetmek için kullanılır.
  • Özel Nesne Yönetimi (Custom Object Management): 
    • override: Miras alınan sınıflardaki metodları geçersiz kılar.
    • virtual: Bir sınıfın türetilen sınıflar tarafından geçersiz kılınabilecek metodlarını tanımlar.
    • base: Miras alınan sınıfın üyelerine erişim sağlar.
  • Uygulama Kontrolü (Application Control): 
    • checked, unchecked: Taşmaları denetler.
    • lock: Eşzamanlı erişimi denetler.

Bu anahtar kelimeler ve grupları, C# programlamaya başlarken temel yapı taşlarıdır.

Bu anahtar kelimelerin kullanım sıklığı proje türlerine ve bazı spesifik durumlara göre değişiklik gösterilebilir, ancak tanımları ve kullanımları hakkında bilgi sahibi olmak oldukça önemlidir.
 

Şimdi sırasıyla bu anahtar kelimelerin tanımlarını inceleyelim ve birer örnek yazalım.

  • Class:  
    • C# programlama dilinde "sınıf" (class), nesne yönelimli programlamanın (Object-Oriented Programming - OOP) temel bir yapı taşıdır. Sınıflar, nesnelerin (objelerin) şablonlarını tanımlar ve nesnelerin nasıl oluşturulacağını ve davranacağını belirler.
  • Sınıfların Genel Tanımı
    • Bir sınıf, belirli bir veri yapısını ve işlevselliği içeren bir taslağı temsil eder.
    • Sınıflar, nesne yönelimli programlamanın temel kavramlarından biridir ve gerçek dünyadaki nesneleri (objeleri) modellemek için kullanılırlar.
    • Sınıflar, nesnelerin özelliklerini (alanlar veya özellikler) ve davranışlarını (metotlar) içerebilir.
  • Sınıf Hakkında Örnek:
    // Örnek 1: Basit bir sınıf tanımı
    public class Person
    {
        // Özellikler (Alanlar)
        public string Name { get; set; }
        public int Age { get; set; }
    
        // Davranışlar (Metotlar)
        public void SayHello()
        {
            Console.WriteLine("Merhaba, ben " + Name);
        }
    }
    
    // Örnek 2: Sınıfın kullanımı ve nesne oluşturma
    class Program
    {
        static void Main()
        {
            // Person sınıfından bir nesne oluşturma
            Person person1 = new Person();
            person1.Name = "Ahmet";
            person1.Age = 30;
    
            // Nesne üzerinde metot çağırma
            person1.SayHello();
    
            // Özelliklere erişim
            Console.WriteLine("Yaş: " + person1.Age);
    
            // Örnek 3: Başka bir sınıfın kullanımı
            Car myCar = new Car();
            myCar.Brand = "Toyota";
            myCar.Model = "Camry";
            myCar.Start();
    
            Console.ReadLine();
        }
    }
    
    // Örnek 4: Başka bir sınıf tanımı
    public class Car
    {
        public string Brand { get; set; }
        public string Model { get; set; }
    
        public void Start()
        {
            Console.WriteLine(Brand + " " + Model + " çalıştırıldı.");
        }
    }
    
  • Yukarıdaki örneklerde, "Person" ve "Car" adlı iki farklı sınıf tanımlanmıştır. Her sınıf, kendi özelliklerini ve davranışlarını içerir. "Person" sınıfı bir kişiyi temsil ederken, "Car" sınıfı bir aracı temsil eder. Main() metodu içinde bu sınıflardan nesneler oluşturularak kullanılır. Sınıflar, nesnelerin özelliklerini ve davranışlarını tanımlamak için kullanıldığı için C# programlarının temel taşlarından biridir.

 

  • Interface: 
    • C# programlama dilinde "interface" (arayüz), nesne yönelimli programlamanın (OOP) bir öğesidir ve belirli bir türdeki nesnelerin belirli bir davranışı uygulamasını sağlayan bir sözleşme (contract) tanımlar. Arayüzler, sınıflar arasında belirli bir davranışın paylaşılmasını ve uyumluluğun sağlanmasını kolaylaştırır. 
  • Genel Tanımı 
    • Bir arayüz, belirli bir türün (sınıf veya yapı) belirli davranışları uygulamak zorunda olduğu yöntemlerin ve özelliklerin (property) bir listesini tanımlar. Arayüzler, sınıfların bu davranışları uygulamalarını sağlar, böylece bu sınıflar o arayüzü uygulayan nesneler olarak kabul edilirler.
  • Interface Hakkında Örnek
    public interface IDrawable
    {
        void Draw(); // İşte bu bir arayüz metodu
        int X { get; set; } // Bu bir arayüz özelliği
        int Y { get; set; }
    }
    

 

  • Arayüz Kullanımı Örneği: 
    • Aşağıda, "IDrawable" adlı bir arayüzün kullanıldığı bir örnek verilmiştir:
      public class Circle : IDrawable
      {
          public int X { get; set; }
          public int Y { get; set; }
          public int Radius { get; set; }
      
          public Circle(int x, int y, int radius)
          {
              X = x;
              Y = y;
              Radius = radius;
          }
      
          public void Draw()
          {
              Console.WriteLine("Daire çizildi: X=" + X + ", Y=" + Y + ", R=" + Radius);
          }
      }
      
      class Program
      {
          static void Main()
          {
              Circle circle = new Circle(5, 5, 3);
              circle.Draw();
          }
      }
      
    • Yukarıdaki örnekte, "IDrawable" arayüzü (interface) "Circle" sınıfı tarafından uygulanmıştır (implement edildi). "Circle" sınıfı, arayüzün belirlediği "Draw" metodu ve "X", "Y" özelliklerini uygulamak zorundadır. Böylece "Circle" sınıfı, "IDrawable" arayüzünü uygulayan bir nesne olarak kabul edilir ve "Draw" metodunu kullanabilir. Arayüzler, kodun daha modüler ve esnek olmasını sağlayarak farklı sınıfların benzer davranışları paylaşmasına olanak tanır.

 

  • new:
    • C# programlama dilinde "new" keyword, çeşitli bağlamlarda kullanılabilen çok amaçlı bir anahtar kelimedir. Aşağıda "new" keyword'ünün bazı kullanım senaryolarını ve ne işe yaradığını açıklamalı bir örnek ile bulabilirsiniz:
  • Yeni Bir Nesne Oluşturma:
    • "new" kelimesi, bir sınıftan yeni bir nesne (instance) oluşturmak için kullanılır. Bu, bir sınıfın constructor (yapıcı) metodunu çağırarak yeni bir nesne örneği oluşturur.
      MyClass myObject = new MyClass();
      
  • Yeni Bir Nesne Üzerinde Alan veya Metot Erişimi:
    • "new" kelimesi, bir sınıfın veya üst sınıfın üye (alan veya metot) tanımlarını gizlemek için kullanılabilir. Bu, alt sınıfın aynı adla yeni bir üye tanımladığında, üst sınıfın üyesini gizlemek için kullanılır.
      class Animal
      {
          public void MakeSound()
          {
              Console.WriteLine("Animal makes a sound");
          }
      }
      
      class Dog : Animal
      {
          public new void MakeSound()
          {
              Console.WriteLine("Dog barks");
          }
      }
      

 

  • Yeniden Uygulama (Method Hiding):
    • "new" kelimesi, miras alınan bir sınıfın metotunu bir alt sınıf içinde yeniden uygularken kullanılabilir. Bu, metodu üst sınıftaki metottan gizlemek ve yeni bir implementasyon sağlamak için kullanılır.
      class Animal
      {
          public virtual void MakeSound()
          {
              Console.WriteLine("Animal makes a sound");
          }
      }
      
      class Dog : Animal
      {
          public override void MakeSound()
          {
              Console.WriteLine("Dog barks");
          }
      }
      
    • Son iki örneğin arasındaki fark:
      • Burada "Dog" sınıfı, "Animal" sınıfının "MakeSound" metodunu aynı adla gizler ve bu metodu yeniden uygular. Bu nedenle "myDog.MakeSound()" ifadesi "Dog barks" yazdırır ve alt sınıfın kendi "MakeSound" metodunu çağırır. Ayrıca, "virtual" ve "override" anahtar kelimeleri, bu tür durumlarda kullanılır ve polimorfizm sağlar. Özetle, "Yeni Bir Nesne Üzerinde Alan veya Metot Erişimi" durumunda alt sınıfın kendi implementasyonu vardır ve üst sınıfın üyesi kullanılmazken, "Yeniden Uygulama (Method Hiding)" durumunda alt sınıfın kendi implementasyonu vardır ve üst sınıfın üyesi yeniden uygulanır.

 

  • this
    • C# programlama dilinde "this" keyword, bir sınıfın içinde yer alan bir metot veya özellik içinde kullanıldığında, bu metot veya özelliğin aynı sınıfa ait olduğunu belirtir. "this" kelimesi, genellikle aynı isimde olan yerel değişkenler veya parametrelerle sınıfın alanları veya özellikleri arasındaki karışıklığı çözmek için kullanılır.
  • This Hakkında Örnek:
    class Person
    {
        private string name;
    
        public Person(string name)
        {
            // "this" kullanarak sınıfın "name" alanına erişiyoruz
            this.name = name;
        }
    
        public void SayHello()
        {
            Console.WriteLine("Merhaba, ben " + this.name); // "this" kullanarak sınıfın "name" alanına erişiyoruz
        }
    }
    
    class Program
    {
        static void Main()
        {
            Person person = new Person("Ahmet");
            person.SayHello(); // "Merhaba, ben Ahmet" yazdırır
    
            Console.ReadLine();
        }
    }
    
  • Yukarıdaki örnekte, "this" kelimesi sınıfın "name" alanına ve "SayHello" metotu içinde sınıfın "name" alanına erişmek için kullanılmıştır. Bu, yerel değişkenlerle sınıf alanlarını ayırt etmek ve doğru değişkeni kullanmak için önemlidir. Ayrıca, "this" keyword'ü, sınıfın içindeki metotları ve özellikleri çağırırken daha açık ve okunabilir bir kod yazmak için kullanışlıdır.

 

  • Abstract
    • C# programlama dilinde "abstract" (soyut) kelimesi, bir sınıfın veya metotun somut bir uygulamasının olmadığını, yalnızca bir şablon veya tasarım sunan bir yapı olduğunu belirtmek için kullanılır. Soyut sınıflar ve metotlar, genellikle diğer sınıflar tarafından devralınarak ve uygulanarak özelleştirilirler.

    • Soyut Sınıf (Abstract Class) Örneği:
      // Soyut bir sınıf tanımlama
      abstract class Shape
      {
          // Soyut bir metot tanımlama
          public abstract double Area();
      }
      
      // Soyut sınıfı miras alan bir alt sınıf
      class Circle : Shape
      {
          public double Radius { get; set; }
      
          public Circle(double radius)
          {
              Radius = radius;
          }
      
          // Abstract metodu uygulama (override)
          public override double Area()
          {
              return Math.PI * Radius * Radius;
          }
      }
      
      class Program
      {
          static void Main()
          {
              // Soyut sınıftan türetilmiş bir nesne oluşturma
              Circle circle = new Circle(5.0);
      
              // Soyut metodu çağırma
              double area = circle.Area();
              Console.WriteLine("Dairenin Alanı: " + area);
      
              Console.ReadLine();
          }
      }
      
    • Yukarıdaki örnekte, "Shape" adlı soyut bir sınıf tanımlanmıştır. Bu sınıfın içinde "Area" adında soyut bir metot bulunur. "Circle" sınıfı, "Shape" sınıfını miras alır ve "Area" metodu soyut sınıftan türetilmiş bir sınıf tarafından uygulanır (override edilir). Bu, her alt sınıfın kendi "Area" metodu uygulamasını sağlar.
    • Soyut sınıflar, genellikle genel davranışları tanımlayan sınıflar olarak kullanılır ve bu davranışları devralan sınıfların özelleştirmesine izin verir. Soyut metotlar ise alt sınıflar tarafından uygulanmalıdır ve bu sayede çok biçimliliği (polimorfizmi) desteklerler.

 

  • Sealed 
    • C# programlama dilinde "sealed" kelimesi, bir sınıfın veya sınıf üyesinin miras alınamaz veya bir türetilmiş sınıf tarafından yeniden uygulanamaz hale getirildiğini belirtmek için kullanılır. "sealed" kelimesi, sınıfın nihai bir durumda olduğunu ve daha fazla değiştirilemeyeceğini gösterir.
    • Sealed Sınıf Örneği
      // Sealed bir sınıf tanımlama
      sealed class SealedClass
      {
          public void SayHello()
          {
              Console.WriteLine("Merhaba, ben sealed bir sınıfım.");
          }
      }
      
      // Sealed sınıfı miras almaya çalışan alt sınıf (hata verecektir)
      // class DerivedClass : SealedClass { }
      
    • Yukarıdaki örnekte, "SealedClass" adlı sınıf "sealed" olarak işaretlenmiştir. Bu nedenle başka bir sınıf, "SealedClass" sınıfını miras alamaz. Eğer bir sınıfı "sealed" olarak işaretlerseniz, bu sınıfın başka sınıflar tarafından türetilmesi veya miras alınması engellenir.
    • Sealed Metot Örneği
    • Aynı şekilde, bir metodu da "sealed" olarak işaretleyebilirsiniz. Aşağıda bir metodu nasıl "sealed" olarak işaretlediğinizi gösteren bir örnek verilmiştir:
      class BaseClass
      {
          public virtual void SayHello()
          {
              Console.WriteLine("Merhaba, ben bir metotum.");
          }
      }
      
      class DerivedClass : BaseClass
      {
          public sealed override void SayHello()
          {
              Console.WriteLine("Merhaba, ben sealed bir metotum.");
          }
      }
      
      class AnotherDerivedClass : DerivedClass
      {
          // Sealed metotları yeniden uygulamak mümkün değil.
          // public override void SayHello() { }
      }
      
    • Yukarıdaki örnekte, "BaseClass" sınıfının "SayHello" metodu "DerivedClass" tarafından miras alınmış ve "sealed" olarak işaretlenmiştir. Bu nedenle "AnotherDerivedClass" sınıfı, "DerivedClass" sınıfının "SayHello" metodunu yeniden uygulayamaz veya geçersiz kılamaz. "sealed" kelimesi, miras alınmış bir sınıfın veya metotun daha fazla değiştirilemeyeceğini belirtir ve kodun güvenliğini artırabilir.