C#'a giriş
C# ("C sharp" olarak telaffuz edilir), Microsoft tarafından geliştirilen modern, genel amaçlı bir programlama dilidir. Masaüstü, web, mobil ve oyun uygulamaları dahil olmak üzere çeşitli uygulama türlerini oluşturmak için yaygın olarak kullanılır. Bu kılavuzda veri türleri, değişkenler, kontrol akışı, işlevler, sınıflar, ad alanları ve daha fazlasını içeren C# programlamanın temellerini ele alacağız.
Ayrıca C#, zengin bir dizi özellik ve araç sunarak onu masaüstü uygulamaları, web geliştirme, mobil uygulamalar ve Unity gibi teknolojileri kullanan oyun geliştirme gibi çeşitli alanlar için çok yönlü ve güçlü bir programlama dili haline getirir. C# yolculuğunuzda ilerledikçe, kalıtım, polimorfizm, arayüzler, jenerikler, LINQ (Dil Entegre Sorgulama) ve görevleri ve eşzamansız/beklemeyi kullanarak eşzamansız programlama gibi daha gelişmiş konuları keşfedebilirsiniz. Bu kavramları anlamak, sağlam ve ölçeklenebilir uygulamalar tasarlama yeteneğinizi geliştirecektir.
Temel bilgilerle başlayalım.
Geliştirme Ortamını Kurma
C#'ta kodlamaya başlamak için geliştirme ortamınızı ayarlamanız gerekir. İşte başlama adımları:
- Visual Studio'yu yükleyin: Visual Studio'yu resmi Microsoft web sitesinden indirip yükleyin. Visual Studio, C# geliştirme için gerekli tüm araçları sağlayan güçlü bir Tümleşik Geliştirme Ortamıdır (IDE).
- Yeni Bir Proje Oluşturun: Visual Studio'yu başlatın ve yeni bir proje oluşturun. Oluşturmak istediğiniz uygulama türüne göre uygun proje şablonunu seçin.
- Kod Yazma: Projeniz ayarlandıktan sonra Visual Studio tarafından sağlanan kod düzenleyicide C# kodu yazmaya başlayabilirsiniz.
Artık geliştirme ortamınızı kurduğunuza göre, C# programlamanın temellerine dalalım.
Merhaba Dünya Programı
Geleneksel "Merhaba Dünya!" program genellikle herhangi bir programlama dilinde yazdığınız ilk programdır. Bunu C# dilinde nasıl yazabileceğiniz aşağıda açıklanmıştır:
using System;
class Program
{
static void Main()
{
Console.WriteLine("Hello, World!");
}
}
Bu kod örneğinde, öncelikle giriş ve çıkışı işlemek için 'Console' adlı bir sınıfı içeren 'System' ad alanını dahil ediyoruz. Daha sonra 'Program' adında bir sınıf tanımlıyoruz. Bu sınıfın içinde bir C# programının giriş noktası olan 'Main' yöntemimiz bulunmaktadır. Son olarak "Merhaba Dünya!" mesajını yazdırmak için 'Console.WriteLine' yöntemini kullanıyoruz. Konsola mesaj.
Değişkenler ve Veri Türleri
C#'ta bunları kullanabilmeniz için değişkenleri bildirmeniz gerekir. Değişkenler farklı veri türlerinin değerlerini tutar. C#'ta yaygın olarak kullanılan bazı veri türleri şunlardır:
- 'int': Tam sayıları temsil eder (örn. 10, -5, 0).
- 'double': Ondalık basamaklı kayan noktalı sayıları temsil eder (örn. 3,14, -0,5).
- 'bool': Boole değerlerini temsil eder (doğru veya yanlış).
- 'string': Bir karakter dizisini temsil eder (örneğin, "Hello", "C#").
Değişken bildirimini ve temel işlemleri gösteren bir örnek:
int age = 25;
double pi = 3.14;
bool isStudent = true;
string name = "John";
int sum = age + 5;
double circleArea = pi * 2 * 2;
bool isAdult = age >= 18;
Console.WriteLine("Name: " + name);
Console.WriteLine("Age: " + age);
Console.WriteLine("Sum: " + sum);
Console.WriteLine("Circle Area: " + circleArea);
Console.WriteLine("Is Adult? " + isAdult);
Bu örnekte, 'age', 'pi', 'isStudent' ve 'name' değişkenlerini ilgili değerleriyle bildiriyoruz. veri tipleri. Toplama, çarpma, karşılaştırma gibi bazı temel işlemleri gerçekleştiriyoruz. 'Console.WriteLine' yöntemi, değerleri konsolda görüntülemek için kullanılır.
Diziler ve Koleksiyonlar
Diziler ve koleksiyonlar, C#'ta birden fazla değeri verimli bir şekilde depolamanıza ve değiştirmenize olanak tanıyan temel veri yapılarıdır. Çeşitli programlama senaryolarında çok önemli bir rol oynarlar ve C# geliştirmede yaygın olarak kullanılırlar.
Diziler
C#'ta bir dizi, aynı türdeki öğelerin sabit boyutlu bir koleksiyonudur. İşte bir örnek:
int[] numbers = new int[5] { 1, 2, 3, 4, 5 };
Bu örnekte, 'numbers' adında, '5' boyutunda bir tamsayı dizisi bildiriyoruz. Diziyi '{}' küme parantezlerini kullanarak belirtilen değerlerle başlatırız. 0'dan başlayarak dizin gösterimini kullanarak dizinin tek tek öğelerine erişebilirsiniz. Örneğin, 'numbers[0]' size ilk öğeyi verir.
Koleksiyonlar
C#'taki koleksiyonlar, dinamik olarak büyüyüp küçülebildikleri için dizilerden daha fazla esneklik sağlar. C#, 'List<T>', 'Dictionary<TKey, TValue>' ve 'HashSet<T>' gibi çeşitli koleksiyon türleri sunar.
'System.Collections.Generic' ad alanındaki sınıflardan birini kullanarak genel bir koleksiyon oluşturabilirsiniz. Genel bir koleksiyon, koleksiyondaki her öğe aynı veri türüne sahip olduğunda kullanışlıdır. Genel bir koleksiyon, yalnızca istenen veri türünün eklenmesine izin vererek güçlü yazmayı zorunlu kılar.
using System.Collections.Generic;
'List<T>' koleksiyonunu kullanan bir örnek:
List<string> names = new List<string>();
names.Add("Alice");
names.Add("Bob");
names.Add("Charlie");
Bu örnekte, 'List<T>' başlatıcı sınıfını kullanarak 'names' adlı dizelerin bir listesini oluşturuyoruz. Listeye eleman eklemek için 'Add()' yöntemini kullanırız.
'List<T>', koleksiyonlarla çalışmak için birçok yararlı yöntem ve özellik sağlar; örneğin öğe sayısını almak için 'Count', kaldırmak için 'Remove()' bir öğe ve 'Contains()' bir öğenin var olup olmadığını kontrol etmek için.
Diziler ve Koleksiyonlar Üzerinde Yineleme
Öğelerine erişmek ve bunları değiştirmek için 'for' veya 'foreach' gibi döngüleri kullanarak diziler ve koleksiyonlar üzerinde yineleme yapabilirsiniz. Aşağıda bir dizi ve liste üzerinde yinelemeye ilişkin bir örnek verilmiştir:
int[] numbers = new int[] { 1, 2, 3, 4, 5 };
foreach (int number in numbers)
{
Console.WriteLine(number);
}
List<string> names = new List<string>() { "Alice", "Bob", "Charlie" };
foreach (string name in names)
{
Console.WriteLine(name);
}
Bu örnekte, 'numbers' dizisindeki ve 'names' listesindeki her öğe üzerinde yineleme yapmak için 'foreach' döngüsünü kullanırız ve bunları yazdırırız. konsol.
Kontrol akışı
Kontrol akışı, koşullara bağlı olarak kararlar vermenize ve farklı kod bloklarını yürütmenize olanak tanır. C#, 'if' ifadeleri, 'switch' ifadeleri ve döngüler dahil olmak üzere çeşitli kontrol akışı yapıları sağlar.
'If'
'if' ifadesi, yalnızca belirtilen koşulun doğru olması durumunda bir kod bloğunu çalıştırmanıza olanak tanır. İşte bir örnek:
int number = 10;
if (number > 0)
{
Console.WriteLine("The number is positive.");
}
else if (number < 0)
{
Console.WriteLine("The number is negative.");
}
else
{
Console.WriteLine("The number is zero.");
}
Bu örnekte 'number' değişkeninin değerini 'if', 'else if' ve 'else' cümlelerini kullanarak kontrol ediyoruz. Koşula bağlı olarak uygun mesaj yazdırılacaktır.
'Switch'
'switch' ifadesi, bir ifadenin değerine göre yürütülecek birçok kod bloğundan birini seçmenize olanak tanır. İşte bir örnek:
int dayOfWeek = 2;
string dayName;
switch (dayOfWeek)
{
case 1:
dayName = "Monday";
break;
case 2:
dayName = "Tuesday";
break;
case 3:
dayName = "Wednesday";
break;
// ...
default:
dayName = "Invalid day";
break;
}
Console.WriteLine("Today is " + dayName + ".");
Bu örnekte, 'switch' ifadesini kullanarak 'dayOfWeek' değerine göre günün adını atadık. 'case' ifadeleri olası değerleri belirtir ve hiçbir durum eşleşmezse 'default' durumu yürütülür.
Döngü İfadeleri
Döngüler, belirli bir koşul karşılanana kadar bir kod bloğunu tekrar tekrar çalıştırmanıza olanak tanır. C#, 'for', 'while' ve 'do-while' döngülerini sağlar.
'For'
Yineleme sayısını önceden bildiğinizde 'for' döngüsü kullanılır. İşte bir örnek:
for (int i = 0; i < 5; i++)
{
Console.WriteLine("Iteration: " + i);
}
Bu örnekte döngü beş kez çalışır ve her seferinde yineleme numarasını yazdırır.
'While'
'while' döngüsü, yineleme sayısını önceden bilmediğinizde ancak kontrol etmeniz gereken bir koşul olduğunda kullanılır. İşte bir örnek:
int count = 0;
while (count < 5)
{
Console.WriteLine("Count: " + count);
count++;
}
Bu örnekte döngü, 'count' değişkeni 5'e ulaşana kadar çalışır.
'Do-While'
'do-while' döngüsü while döngüsüne benzer, ancak koşul sonunda kontrol edilir, dolayısıyla döngü en az bir kez yürütülür. İşte bir örnek:
int num = 1;
do
{
Console.WriteLine("Number: " + num);
num++;
} while (num <= 5);
Bu örnekte döngü, 'num' değişkeni artık 5'ten küçük veya ona eşit olmayana kadar çalışır.
Fonksiyonlar
Functions, yeniden kullanılabilir kod bloklarını kapsüllemenize olanak tanır. C#, değer döndürmeyen yöntemler için 'void' anahtar sözcüğünü ve değer döndüren yöntemler için diğer veri türlerini kullanarak işlevleri tanımlamayı destekler. İşte bir örnek:
int Add(int a, int b)
{
return a + b;
}
void Greet(string name)
{
Console.WriteLine("Hello, " + name + "!");
}
int result = Add(5, 3);
Greet("Alice");
Bu örnekte iki fonksiyon tanımlıyoruz: 'Add' ve 'Greet'. 'Add' işlevi iki tam sayı parametresi alır ve bunların toplamını döndürür. 'Greet' işlevi bir dize parametresi alır ve bir karşılama mesajı yazdırır. Daha sonra bu işlevleri uygun argümanlarla çağırırız.
Sınıflar ve Nesneler
C#, nesne yönelimli bir programlama dilidir; yani sınıflar ve nesnelerin oluşturulmasını destekler. Sınıflar, bu sınıfların örnekleri olan nesnelerin yaratılmasına yönelik planı tanımlar. İşte bir örnek:
class Person
{
public string Name { get; set; }
public int Age { get; set; }
public void SayHello()
{
Console.WriteLine("Hello, my name is " + Name + " and I'm " + Age + " years old.");
}
}
Person person = new Person();
person.Name = "John";
person.Age = 30;
person.SayHello();
Bu örnekte 'Person' sınıfını 'Name' ve 'Age' özellikleriyle ve 'SayHello' yöntemiyle tanımlıyoruz. Daha sonra 'new' anahtar sözcüğünü kullanarak 'Person' sınıfının bir örneğini oluştururuz ve özelliklerini ayarlarız. Son olarak 'SayHello' nesnesi üzerinde 'SayHello' metodunu çağırıyoruz.
Nesneye Yönelik Programlama (OOP) Kavramları
C#, nesne yönelimli bir programlama dilidir ve kalıtım, kapsülleme ve polimorfizm gibi OOP kavramlarını desteklemek için çeşitli özellikler sağlar.
Miras
Kalıtım, mevcut sınıflara dayalı olarak, onların niteliklerini ve davranışlarını devralarak yeni sınıflar oluşturmanıza olanak tanır. İşte bir örnek:
class Shape
{
public virtual void Draw()
{
Console.WriteLine("Drawing a shape.");
}
}
class Circle : Shape
{
public override void Draw()
{
Console.WriteLine("Drawing a circle.");
}
}
Bu örnekte 'Circle' sınıfı, ':' sembolünü kullanarak 'Shape' sınıfından miras alır. 'Circle' sınıfı, kendi uygulamasını sağlamak için temel sınıfın 'Draw' yöntemini geçersiz kılar.
Kapsülleme
Kapsülleme, verileri ve yöntemleri bir sınıfta bir araya getirme ve erişimlerini kontrol etme uygulamasıdır. Üyelerin görünürlüğünü belirtmek için erişim değiştiricileri ('public', 'private', 'protected', vb.) kullanabilirsiniz. İşte bir örnek:
class Person
{
private string name;
public string GetName()
{
return name;
}
public void SetName(string newName)
{
name = newName;
}
}
Bu örnekte, 'name' alanı 'Person' sınıfı içinde kapsüllenmiştir ve yalnızca 'GetName' ve * aracılığıyla erişilebilir. h81* yöntemleri.
Polimorfizm
Polimorfizm, farklı sınıflardaki nesnelerin ortak bir temel sınıfın nesneleri olarak ele alınmasına olanak tanır. Bu, farklı türdeki nesnelerle aynı şekilde çalışan kodun yazılmasını sağlar. İşte bir örnek:
class Animal
{
public virtual void MakeSound()
{
Console.WriteLine("Animal makes a sound.");
}
}
class Dog : Animal
{
public override void MakeSound()
{
Console.WriteLine("Dog barks.");
}
}
class Cat : Animal
{
public override void MakeSound()
{
Console.WriteLine("Cat meows.");
}
}
Bu örnekte 'Animal' sınıfı, 'Dog' ve 'Cat' tarafından geçersiz kılınan sanal bir 'MakeSound' yöntemine sahiptir. sınıfları. Polimorfizm, 'Dog' ve 'Cat' örneklerini 'Animal' örnekleri olarak ele almamıza ve 'MakeSound''i çağırmamıza olanak tanır Onlara yönelik yöntem.
İstisna işleme
İstisna yönetimi, çalışma zamanı hatalarını incelikli bir şekilde ele almanıza olanak tanır. C#'ta istisnaları yakalamak ve işlemek için 'try-catch' bloklarını kullanabilirsiniz. İşte bir örnek:
try
{
int result = 10 / 0;
Console.WriteLine("Result: " + result);
}
catch (DivideByZeroException ex)
{
Console.WriteLine("Divide by zero error: " + ex.Message);
}
finally
{
Console.WriteLine("Cleanup code goes here.");
}
Bu örnekte, 'DivideByZeroException' sonucunu veren sıfıra bölme işlemi gerçekleştirmeye çalışıyoruz. 'try' bloğunun içindeki kod yürütülür ve bir istisna meydana gelirse 'catch' bloğu tarafından yakalanır.
'finally' bloğu, bir istisnanın oluşup oluşmamasına bakılmaksızın yürütülür ve genellikle temizleme işlemleri için kullanılır.
İstisna yönetimi, program çökmelerinin önlenmesine yardımcı olur ve kontrollü hata yönetimi ve kurtarmaya olanak tanır.
Çözüm
Bu kapsamlı kılavuz, dilin temellerini ve temel kavramlarını kapsayan, C# programlamaya ayrıntılı bir giriş sağladı. Geliştirme ortamını kurmak ve bir "Merhaba Dünya!" yazmakla başlayın. Programımızda veri türlerini, değişkenleri, if ifadeleri ve döngüler gibi kontrol akış yapılarını ve işlevlerin oluşturulmasını inceledik. Sınıflar, nesneler, kalıtım, kapsülleme, polimorfizm ve istisna yönetimi gibi daha ileri konulara değindik. Ek olarak, birden fazla değeri yönetmek için dizilerin ve koleksiyonların kullanımını tartıştık. Bu bilgiyle artık C# programlamada sağlam bir temele sahip olursunuz ve konsol uygulamalarından web ve mobil uygulamalara kadar çok çeşitli uygulamalar geliştirmenize olanak sağlanır. Becerilerinizi geliştirmek ve sonsuz olasılıkların kilidini açmak için geniş C# ekosistemini uygulamaya ve keşfetmeye devam etmeyi unutmayın.