C Nasıl Yapılır?

C Nasıl Yapılır?
C Nasıl Yapılır?

C# (C-Sharp), Microsoft tarafından geliştirilen, nesne yönelimli, modern ve tip güvenli bir programlama dilidir. Günümüzde web uygulamalarından mobil oyunlara, bulut servislerinden yapay zeka entegrasyonlarına kadar geniş bir ekosistemde başrol oynamaktadır. Bu rehberde, modern yazılım standartlarına uygun olarak C# nasıl yapılır sorusunun yanıtını adım adım, pratik ve tamamen çalışır kod örnekleriyle inceleyeceğiz.

Yazılım dünyasına yeni adım atanlar veya mevcut bilgilerini en güncel .NET teknolojileriyle yapılandırmak isteyen geliştiriciler için hazırlanan bu makale, teorik anlatımlardan uzak, doğrudan üretime hazır (production-ready) pratikleri içerir. Rehber boyunca yazacağımız tüm projeler, modern C# sözdizimi ve en iyi güvenlik pratikleri göz önünde bulundurularak tasarlanmıştır.

Bu makaleyi tamamladığınızda, C# dilinin temel yapı taşlarını öğrenecek, nesne yönelimli programlama prensiplerini kavrayacak, asenkron programlama yapabilecek ve güvenli veritabanı işlemlerini gerçekleştirebileceksiniz. Hazırsanız, modern C# geliştirme ortamımızı kurarak ilk adımımızı atalım.

Gereksinimler ve Ön Hazırlık

C# ile uygulama geliştirmek için öncelikle bilgisayarımıza kodlarımızı derleyecek ve çalıştıracak olan geliştirme ortamını kurmamız gerekir. Modern C# ekosistemi, platform bağımsız (cross-platform) bir yapıya sahiptir; yani kodlarınızı Windows, macOS veya Linux işletim sistemlerinde sorunsuz bir şekilde yazıp çalıştırabilirsiniz.

Geliştirme sürecine başlamak için aşağıdaki araçların bilgisayarınızda kurulu olması gerekmektedir:

  • .NET SDK (Software Development Kit): C# kodlarını derlemek ve çalıştırmak için gerekli olan resmi yazılım geliştirme kitidir. En güncel kararlı sürümü resmi Microsoft web sitesinden indirmeniz önerilir.
  • IDE veya Kod Editörü: Profesyonel bir geliştirme deneyimi için Visual Studio 2022, hafif ve hızlı bir alternatif için ise Visual Studio Code (C# Dev Kit eklentisi ile birlikte) veya JetBrains Rider tercih edilmelidir.
  • Terminal / Komut Satırı: Proje oluşturma, paket yönetimi ve çalıştırma işlemlerini gerçekleştirmek için terminal bilgisi temel düzeyde gereklidir.

Kurulumları tamamladıktan sonra, terminal ekranınızı açıp aşağıdaki komutu yazarak kurulumun başarıyla tamamlandığını ve hangi .NET sürümünün aktif olduğunu kontrol edebilirsiniz:

dotnet --version

Bu komut ekranınıza kurulu olan güncel .NET sürüm numarasını yazdıracaktır. Eğer sürüm numarasını başarıyla görüyorsanız, ilk C# projemizi oluşturmaya hazırsınız demektir.

Adım Adım İlk C# Konsol Uygulaması Nasıl Yapılır?

C# programlama dilinde kod yazmaya başlamanın en sade yolu bir konsol (Console) uygulaması oluşturmaktır. Konsol uygulamaları, grafiksel bir arayüze ihtiyaç duymadan doğrudan komut satırı üzerinden çalışan programlardır.

Yeni bir konsol uygulaması oluşturmak için terminalinizde projenizi kaydetmek istediğiniz dizine gidin ve aşağıdaki komutu çalıştırın:

dotnet new console -o IlkCsharpUygulamam

Bu komut, "IlkCsharpUygulamam" adında yeni bir klasör oluşturacak ve içerisine temel C# şablon dosyalarını yerleştirecektir. Klasörün içerisine girdiğinizde karşınıza çıkan Program.cs dosyası, uygulamamızın giriş noktasıdır. Aşağıdaki örnek kod bloğunda, modern C# standartlarına uygun olarak yazılmış, kullanıcıdan girdi alan ve bunu ekrana yazdıran güvenli bir başlangıç uygulaması yer almaktadır:

// Program.cs - İlk C# Uygulaması Örnek Kod Bloğu

using System;

Console.WriteLine("C# Dünyasına Hoş Geldiniz!");
Console.Write("Lütfen adınızı giriniz: ");

string? kullaniciAdi = Console.ReadLine();

if (!string.IsNullOrWhiteSpace(kullaniciAdi))
{
    string temizlenmisAd = kullaniciAdi.Trim();
    Console.WriteLine($"Merhaba {temizlenmisAd}, bugün C# ile harika şeyler kodlayacağız!");
}
else
{
    Console.WriteLine("Geçersiz bir isim girdiniz. Lütfen programı yeniden çalıştırın.");
}

Yukarıdaki kod bloğunda, modern C# özelliklerinden biri olan "Top-level statements" (Üst düzey ifadeler) kullanılmıştır. Bu özellik sayesinde geleneksel namespace, class ve static void Main şablon kodlarını yazmak zorunda kalmadan doğrudan mantıksal kodumuzu yazabiliriz. Kod içerisinde kullanılan string? ifadesi, değişkenin boş (null) değer alabileceğini belirtir ve bizi olası çalışma zamanı hatalarından korur.

Yazdığınız bu ilk kodu test etmek için terminalinizde proje klasörünün içerisindeyken şu komutu çalıştırmanız yeterlidir:

dotnet run

C# Nesne Yönelimli Programlama (OOP) Yapısı Nasıl Kurulur?

C# tamamen nesne yönelimli (Object-Oriented Programming - OOP) bir dildir. OOP, gerçek dünyadaki nesneleri ve ilişkileri kod ortamına aktarmamızı sağlar. Bu yaklaşım, kodun yeniden kullanılabilirliğini (reusability) ve bakım kolaylığını artırır.

Nesne yönelimli programlamanın temel yapı taşları sınıflar (classes), nesneler (objects), kalıtım (inheritance), kapsülleme (encapsulation) ve çok biçimliliktir (polymorphism). Aşağıdaki örnek kodda, bir şirket yönetim sistemindeki çalışanları temsil eden bir sınıf yapısı ve bu sınıftan türetilen bir alt sınıf tasarlanmıştır:

// OOP Standartlarında Sınıf ve Kalıtım Örneği

using System;

public class Calisan
{
    public string Ad { get; set; }
    public string Soyad { get; set; }
    private decimal _maas;

    public Calisan(string ad, string soyad, decimal baslangicMaasi)
    {
        Ad = ad;
        Soyad = soyad;
        MaasGuncelle(baslangicMaasi);
    }

    public decimal Maas
    {
        get { return _maas; }
    }

    public void MaasGuncelle(decimal yeniMaas)
    {
        if (yeniMaas > 0)
        {
            _maas = yeniMaas;
        }
        else
        {
            throw new ArgumentException("Maaş miktarı sıfırdan büyük olmalıdır.");
        }
    }

    public virtual void BilgiYazdir()
    {
        Console.WriteLine($"Çalışan: {Ad} {Soyad} - Maaş: {Maas:C}");
    }
}

public class Yonetici : Calisan
{
    public string Departman { get; set; }

    public Yonetici(string ad, string soyad, decimal maas, string departman) 
        : base(ad, soyad, maas)
    {
        Departman = departman;
    }

    public override void BilgiYazdir()
    {
        Console.WriteLine($"Yönetici: {Ad} {Soyad} - Departman: {Departman} - Maaş: {Maas:C}");
    }
}

Bu kod örneğinde, Calisan adında bir temel sınıf (base class) oluşturulmuştur. Sınıf içindeki _maas değişkeni private erişim belirleyicisi ile dış dünyadan gizlenmiş (encapsulation), sadece kontrollü bir metot aracılığıyla güncellenmesine izin verilmiştir. Yonetici sınıfı ise Calisan sınıfından miras almış (inheritance) ve temel sınıftaki BilgiYazdir metodunu kendi ihtiyaçlarına göre ezerek (polymorphism - override) yeniden tanımlamıştır.

Bu yapıyı test etmek için ana program dosyanızda şu şekilde nesneler oluşturup metotları çağırabilirsiniz:

// OOP Yapısının Test Edilmesi

try
{
    Calisan personel = new Calisan("Ahmet", "Yılmaz", 45000);
    personel.BilgiYazdir();

    Yonetici mudur = new Yonetici("Ayşe", "Kaya", 75000, "Bilgi İşlem");
    mudur.BilgiYazdir();
}
catch (ArgumentException ex)
{
    Console.WriteLine($"Hata oluştu: {ex.Message}");
}

C# ile Asenkron Programlama (Async/Await) Nasıl Yapılır?

Modern uygulamalarda veritabanı sorguları, dosya okuma/yazma işlemleri veya web servis çağrıları gibi zaman alan işlemler sıkça yapılır. Bu işlemler sırasında uygulamanın kilitlenmesini önlemek ve kaynakları verimli kullanmak için asenkron (eşzamansız) programlama teknikleri kullanılır.

C# dilinde asenkron programlama, async ve await anahtar kelimeleri ile oldukça sade ve okunabilir bir şekilde gerçekleştirilir. Aşağıdaki kod bloğunda, harici bir API servisinden veri çekiyormuş gibi simüle edilen asenkron bir işlem yer almaktadır:

// Asenkron Metot Tanımlama ve Kullanım Örneği

using System;
using System.Net.Http;
using System.Threading.Tasks;

public class VeriServisi
{
    private readonly HttpClient _httpClient = new HttpClient();

    public async Task WebSayfasiIcerigiIndirAsync(string url)
    {
        try
        {
            Console.WriteLine($"{url} adresinden veri indiriliyor...");
            // Asenkron olarak HTTP GET isteği gönderilir
            string icerik = await _httpClient.GetStringAsync(url);
            return icerik.Substring(0, Math.Min(icerik.Length, 150)) + "...";
        }
        catch (HttpRequestException ex)
        {
            return                
Bu yazıya tepkinizi paylaşın:
Kerem Demir

Dijital araçlar ve kişisel verimlilik üzerine uzmanlaşmış profesyonel bir yazarım. Karmaşık konuları basit ve anlaşılır kılmak için rehber odaklı içerikler üretiyorum.

Yorumlar (0)

Yorum Yaz