# C Sharp sözdizimi
 - YÖNLENDİRME 
 "Temel madde: C#"
C# sözdizimi, kodların nasıl yazılacağını ve yorumlanması gerektiğini tanımlayan kurallar kümesidir. Bu kurallar, C# programlarının derleyici tarafından doğru bir şekilde okunup çalıştırılmasını sağlar. C# sözdizimi, diğer programlama dillerinkine benzer şekilde değişkenlerin tanımlanmasından, döngülerin ve koşullu ifadelerin yazılmasına kadar, programın yapısını ve işleyişini belirleyen temel unsurları içerir.


## Temel Bilgiler (Basics).
### Tanımlayıcı (Identifier).
C# sözdiziminde bir metoda, değişkene veya kullanıcı tarafından tanımlanan herhangi başka bir öğeye atanan isme tanımlayıcı (Identifier) denir.
Değişkenler,
  - "_" ile
  - Büyük ve küçük harf ile başlayabilir.
  - Bir karakterden birkaç karaktere değişen uzunluklarda olabilir
  - Türkçe karakterler kullanılabilir.
Fakat;
  - Bir numerik karakter ile başlayamaz.
  - Anahtar kelime (keyword) hariç, sembol ile başlayamaz. ["Anahtar kelimeler (keywords)]"
  - 511 karakterden fazla karaktere sahip olamaz.


#### Anahtar kelimeler (Keywords).
Bağlamsal anahtar kelime, kodda belirli bir anlam sağlamak için kullanılan ancak C# dilinde rezerve edilmiş bir sözcük olmayan kelimedir. Bazı bağlamsal anahtar kelimeler, örneğin "partial" ve "where", birden fazla bağlamda özel anlamlara sahiptir. Aşağıdaki C# anahtar kelimeleri bağlamsaldır:
Anahtar kelimeler, değişken isimlendirirken kullanılamayan ayrılmış sözcüklerdir. Ancak, kullanılmak istenilen kelimenin önüne @ (kuyruklu a) koyarak, tanımlayıcı hâle getirilebilir.
string @out; //Şimdi olağan tanımlayıcı kelime olarak kullanılabilir.
Not: out günümüzde hala kullanılabilen bir anahtar kelimedir.


### Değişkenler (Variables).
Değişkenler, değerlerle ilişkilendirilmiş tanımlayıcılardır. Değişkenin türü ve adı yazılarak bildirilirler ve isteğe bağlı olarak aynı satır içinde ilk değerleri atanabilir.
Tanımlama (Declare)
int degiskenim; // 'int' türünde 'degiskenim' adında başlangıç değeri atanmamış bir değişken tanımlama
Atama (Initialize)
Bir değişkene istenilen bir değer tanımlayabilmektir.
int degiskenim; // Atama yapılmamış bir değişken bildirme
degiskenim = 35; // Değişkene bir değer atama
Bildirim ve Atama (Declare & Initialize)
int degiskenim = 35; // Aynı zamanda değişkenin bildirimi ve atanması
Büyük ve küçük harfe duyarlıdır
Değişkenler, aynı isme sahip olsalar dahi büyük ve küçük harf farkı olduğunda farklı değişkenler olarak değerlendirilir ve farklı değerler tutabilirler.
 string book = "Suç ve Ceza";
 string Book = "Savaş ve Barış";


### Veri Türleri (Data Types).
C# statik olarak tür denetimi yapılan bir dildir, yani her değişkenin bir türü olmalıdır.


#### Temel Veri Türleri.
int age = 25;
float pi = 3.14f;
string name = "John";
bool isAlive = true;
Console.WriteLine($"Name: {name}, Age: {age}, IsAlive: {isAlive}");


### Operatörler (Operators).
#### Aritmetik Operatörler.
  - Toplama (+), Çıkarma (-), Çarpma ( ), Bölme (/), Modül (%).


#### Atama Operatörleri.
  - = ile değer atanır.
  - Kısayollar: +=, -=,  =, /=, %=.


#### Mantıksal Operatörler.
  - VE (&&), VEYA (||), DEĞİL (!).


### Koşul İfadeleri (Conditional Expressions).
C# programlarında koşullar, programın akışını kontrol eder.


#### if-else:.
int number = 10;
if (number > 0)
 Console.WriteLine("Pozitif");
else
 Console.WriteLine("Negatif veya Sıfır");


#### switch.
string day = "Monday";
switch (day)
 case "Monday":
 Console.WriteLine("Pazartesi");
 break;
 case "Friday":
 Console.WriteLine("Cuma");
 break;
 default:
 Console.WriteLine("Diğer gün");
 break;


### Döngüler (Cycles).
#### for Döngüsü.
for (int i = 0; i < 5; i++)
 Console.WriteLine($"Sayı: {i}");


#### while Döngüsü.
int counter = 0;
while (counter < 5)
 Console.WriteLine($"Counter: {counter}");
 counter++;


#### foreach Döngüsü.
string[] fruits = { "Elma", "Armut", "Muz" };
foreach (string fruit in fruits)
 Console.WriteLine(fruit);


### Metotlar (Methods).
Metotlar, tekrar eden kodların modüler hale getirilmesini sağlar.


#### Tanımlama.
class Program
 static void Greet(string name)
 Console.WriteLine($"Merhaba, {name}!");
 static void Main(string[] args)
 Greet("Ali");


#### Geri Dönen Metot.
static int Add(int a, int b)
 return a + b;


### Sınıflar ve Nesneler (Classes and Objects).
C# nesne yönelimli bir dildir. Sınıflar, bir nesne için planlar veya şablonlardır.


#### Sınıf Tanımlama.
class Car
 public void DisplayInfo()
 Console.WriteLine($"Marka: {Brand}, Yıl: {Year}");


#### Nesne Kullanımı.
Car myCar = new Car();
myCar.Brand = "Toyota";
myCar.Year = 2020;
myCar.DisplayInfo();


### Hata Yönetimi (Error Management).
Hatalar, try-catch blokları ile yönetilir.
try
 int x = int.Parse("abc");
catch (FormatException ex)
 Console.WriteLine($"Hata: {ex.Message}");
finally
 Console.WriteLine("Her zaman çalışır.");