C# öğrenmek 101: Temel
C#’a temelden başlayacağız. C# kullanılan ve bilinen dillerden biri. Öğrenilmesi korkulan bir dillerden ama göz korktucudur fakat hiçbir dil öğrenilmek isteyecek ve öğrenilmeyecek düzeyde değildir.
C# birçok yönde kullanılan bir dil, backend, backend web, frontend web, mobil, form, oyun uygulamaları ve daha fazlası..
Başlayalım.
Çalıştırma Ortamı
İlk önce c#’ı deneyecek bir ortam lâzım. Bilgisayarınıza dotnet veya Visual Studio indirip bilgisayarınıza kurabilirsiniz.
Kurmayıp, internet üzerinden “c# online compiler” ile de kodları deneyebilirsiniz.
Visual Studio var ise oradan Console App’ı seçip kurun.
Eğer dotnet ile kuracaksanız ise terminal’i açıp, dotnet new console -n ConsoleAppName yazmanız gerekiyor.
Çalıştırmak için ise klasörün bulunduğu terminale dotnet run watch yazmanız yeterli.

Merhaba dünya!
Konsola bir yazı yazdıralım:
Console.WriteLine("Merhaba dünya!");Değişken ve Tipler
Değikenleri ve tipleri öğrenelim:
string adi = "Burak"; // yazıları genelde tutar
int yasi = 24; // sayıları tutar
double ondalikliSayi = 10.5; // ondalıklı sayı
bool onayliMi = false; // true ya da false alır doğru veya yanlış..Gelin bu adi değişkenini ekrana bastıralım:
Console.WriteLine(adi);Meselâ iki tipi toplayalım:
int sayi1 = 5;
int sayi2 = 10;
Console.WriteLine(sayi1+sayi2);Consol methodları
Konsolun direkt kapanmaması için şu komutu yazmanız gerekiyor:
Console.ReadKey();Şimdi konsoldan veri gireceğiz ve aldığımız verileri toplayacağız:
int sayi1 = Console.ReadLine("Sayı 1 giriniz: ");
int sayi2 = Console.ReadLine("Sayı 2 giriniz: ");
int sonuc = sayi1+sayi2;
Console.WriteLine("Sayıların toplamı: " + sonuc);Şart blokları kullanımı:
int yas = 18;
if(yas == 18){
Console.WriteLine("18 yaşına eşit, reşit.");
}
else if(yas > 18){
Console.WriteLine("18 yaşından büyük, reşit.");
}
else{
Console.WriteLine("18 yaşından küçük, reşit değil.");
}Burada reşit mi değil mi kodu yazdık. 3 durum var. Ona göre de kodları yazdık.
Ayrıca şart bloklarından switch var:
int sayi = 1;
switch(deger){
case 1:
Console.WriteLine("1 seçildi");
break;
case 2:
Console.WriteLine("2 seçildi");
break;
default:
Console.WriteLine("bir numara seçildi");
break;
}Veri türlerini dönüştüreceğiz, 3 türlü dönüştürme var.
Convert.ToInt16("15"); // değer int olacaktır.
// tipleri kontrol için: typeof() kullanabiliriz.
typeof(degisken);
// veya
int.Parse(degisken);
// string için özel
degisken.ToString();
Convert.ToString(degisken); //aynıFonksiyon kullanımı:
static int Topla(int sayi1, int sayi2)
{
return sayi1 + sayi2;
}
static void MesajGoster(string mesaj)
{
Console.WriteLine(mesaj);
}
// kullanım:
int sonuc = topla(4,5);
MesajGoster(sonuc);Neden static kullanıyoruz? Çünkü direkt olarak çağırabiliyoruz.
void fonksiyonlarda ise geriye bir şey döndürmüyoruz. return yok.
Ayrıca topla fonksiyonunda int dedik, bu int bize dönecek değerin tipini temsil ediyor.
Bide override dediğimiz bir tür var, bu tür basittir. 2 fonksiyonuz var ama parametreler farklı ya da tipleri ama adları aynı buna işte override diyoruz, bakınız:
static int Topla(int x, int y)
{
return x + y;
}
static double Topla(double x, double y)
{
return x + y;
}Fonksiyonlar hakkında bilmeniz gerekenler bunlar.
Liste oluşturmak:
// 3 Tip array oluşturabiliriz.
string[] arabalar = { "Volvo", "BMW", "Ford", "Mazda" };
List<string[]> data = new List<string[]>() { arabalar, kisiler };
// 2 boyutlu
string[,] kisiler = { {"burak", "istanbul" },{ "ümit", "adana"} };Liste içindekileri ekrana bastırmak:
foreach (string araba in arabalar){
Console.WriteLine(araba);
}Listeye, item eklemek:
ArrayList arr = new ArrayList()
arr.Add("Burak")
//veya
List<string> arr = new List<string>()
arr.Add("Burak")
// daha kullanışlı bir List
BindingList<string> arr = new BindingList<string>()
arr.Add("Burak")Sözlüğe item ekleme:
Dictionary<string, string> dict = new Dictionary<string, string>()
arr.Add("key", "value")Sınıflara giriş yapalım, bir sınıf oluşturalım ve bu sunuf kişi sınıfı olsun:
public class User
{
public int Id { get; set; }
public string Adi{ get; set; }
public int Yasi { get; set; }
public void Add() {
Console.WriteLine($"Kişi Eklendi: Id = {Id}, Adı = {Name}, Yaşı = {Age}");
}
}Bu sınıfı çağırıp kullanalım:
User user1 = new User { Id = 1, Name = "Burak", Age = 24 };Sınıflar, public, private, protected diye ayrılır.
private, sadece bulunduğu classdan erişilebilir. protected ise alt classlardan erişilebilir. public, her yerden erişilir.
C#’in asıl özelliği, OOP tabanlı yani Türkçesi Nesne Yönelimli Programlamadır.
Interface oluşturalım:
public interface IHayvan
{
void SesCikar(); // Bir metodun imzası
void HareketEt(); // Diğer bir metodun imzası
}Kullanalım:
public class Kedi : IHayvan
{
public void SesCikar()
{
Console.WriteLine("Kedi: Miyav!");
}
public void HareketEt()
{
Console.WriteLine("Kedi hareket ediyor.");
}
}Abstract Sınıf:
public abstract class Hayvan
{
public abstract void SesCikar(); // Soyut metot
public void HareketEt() // Normal metot
{
Console.WriteLine("Hayvan hareket ediyor.");
}
}
public class Kedi : Hayvan
{
public override void SesCikar()
{
Console.WriteLine("Kedi miyavlıyor.");
}
}Enum oluşturmak:
enum Gunler { Cuma, Cumartesi, Pazar, Pazartesi };get, set kullanımı:
class User
{
private string adi;
public string Adi
{
get { return adi; }
set { adi = value; }
}
}
class Program
{
static void Main(string[] args)
{
User burak = new Person();
burak.Adi = "Burak Behlül";
Console.WriteLine(burak.Adi);
}
}Abstraction kullanımı:
// Soyut bir Hayvan sınıfı
public abstract class Hayvan
{
public string Ad { get; set; } // Hayvanın adı
public int Yas { get; set; } // Hayvanın yaşı
// Soyut bir metot
public abstract void SesCikar(); // Her hayvanın kendine özgü sesi olacak
}Inheritance kullanımı:
// Köpek sınıfı, Hayvan sınıfını miras alır
public class Kopek : Hayvan
{
public string Tur { get; set; } // Köpeğin türü (ör. Golden Retriever)
// Ses çıkar metodu
public override void SesCikar()
{
Console.WriteLine($"{Ad}: Hav Hav!");
}
}
// Kedi sınıfı, Hayvan sınıfını miras alır
public class Kedi : Hayvan
{
public string Renk { get; set; } // Kedinin rengi
// Ses çıkar metodu
public override void SesCikar()
{
Console.WriteLine($"{Ad}: Miyav Miyav!");
}
}Polymorphism örneği:
using System;
using System.Collections.Generic;
public class Program
{
public static void Main(string[] args)
{
// Hayvan listesi
List<Hayvan> hayvanlar = new List<Hayvan>
{
new Kopek { Ad = "Karabaş", Yas = 5, Tur = "Golden Retriever" },
new Kedi { Ad = "Mırmır", Yas = 3, Renk = "Siyah" }
};
// Tüm hayvanların sesini çıkar
foreach (var hayvan in hayvanlar)
{
Console.WriteLine($"Ad: {hayvan.Ad}, Yaş: {hayvan.Yas}");
hayvan.SesCikar();
}
}
}Açıklamaları ekledim ki, daha iyi anlayabilesiniz diye. Yeni başlayanlar için OOP biraz karışık gelebilir fakat proje yaptıkça ve kullandıkça hem anlaması hem de niye kullanıldığını anlamak kolay ve açıklayıcı gelecektir.
Promise yapısı:
try
{
// kod
}
catch (Exception e)
{
// hatalar
}
finally {
// en son çalışacak kodlar
}async/await yapısı:
public async Task VeriGetir(string url)
{
return await beklenenIslem();
}Bu eğitiminde sonuna geldik. En kullanılan kod yapılarını size verdim, en kolay şekilde açıkladım ve koydum.
OOP yapısına mutlaka çalışın ve öğrendiklerinizi pratik edin.
C#’ın diğer alanlarınla ilgili de yazı gelecek.
Takipte kalın.
İyi kodlamalar!
Yorumlar
Yorum Gönder