C#, Microsoft tarafından geliştirilen modern ve açık kaynaklı Nesneye Yönelik bir programla dilidir. Sözdizimi (syntax) C, C++ ve Java gibi C tarzı dillerin sözdizimine benzer. C# ile yazılmış bir kod bloğunun çalıştırılabilmesi için .Net (DotNet) SDK’sı gereklidir. C# kodu yazmak için Visual Studio IDE’si veya daha hafif olan Visual Studio Code kullanılabilir.
C#, statik tipli bir programlama dilidir, yani değişken türleri derleme zamanında belirli olmak zorundadır. Derleme zamanında değişkenlerin türleri gerekli kontrollerden geçer, böylece çalışma hatalarının önüne geçilmesi hedeflenmektedir.
Noktalı virgüller (;) bir ifadenin sonunu belirtmek için kullanılır.
Birden fazla ifade süslü parantezler ({}) arasında kullanılır.
C# iki farklı açıklama türünü destekler:
Tek satırlı açıklamalar, (//) işaretinden sonra kullanılır.
Çok satırlı açıklamalar (/* */) işaretleri arasında kullanılır.
Örnek kullanım:
using System;
{*
Çok satırlı
açıklama satırı örneği
*}
namespace HelloWorld
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Merhaba, Dünya!"); // Tek satırlı açıklama örneği
}
}
}Açıklama satırları derleyici tarafından görmezden gelinir. Geliştirilen yazılım projelerinde, kod revizyonları sırasında veya kodlarla başka yazılımcılar ilgilendiğinde; kod bloklarının ne işler yaptıklarını belirten yorum satırları yazmak kodların anlaşılmasında yardımcı olur.
Değişkenler ve Değişken Türleri
Bir yazılım projesi üretilirken sıklıkla değişkenlere başvurulur. C# ile bir değişken tanımlamak için değişkenin ismi ve türünün belirtilmesi gereklidir. Değişken isimleri bir harf veya altçizgi işareti (_) ile başlar; bir harf, altçizgi (_) veya bir rakamla devam eder. Değişken isimleri bir rakamla başlamaz.
Örnek kullanım:
using System;
namespace HelloWorld
{
class Program
{
static void Main(string[] args)
{
string isim = "Mehmet"; // string türünde bir değişken tanımlandı
int _yas = 20; // int yani tamsayı türünde bir değişken tanımlandı
Console.WriteLine("Kişinin adı: " + isim; // Kişinin adı konsola yazdırıldı
Console.WriteLine("Kişinin yaşı: " + _yas; // Kişinin yaşı konsola yazdırıldı
}
}
}C# programla dilinde “var” anahtar kelimesi ile değişken tanımlamak mümkündür. Bu durumda derleyici değişkenin türünü otomatik olarak belirleyip atayacaktır, fakat değişkenin değer atanarak tanımlanması gereklidir.
Örnek kullanım:
using System;
namespace HelloWorld
{
class Program
{
static void Main(string[] args)
{
string isim = "Mehmet"; // string türünde bir değişken tanımlandı
int _yas = 20; // int yani tamsayı türünde bir değişken tanımlandı
var departman = "İnsan Kaynakları"; // değişken türü derleyici tarafından atanır
Console.WriteLine("Kişinin adı: " + isim; // Kişinin adı konsola yazdırılır
Console.WriteLine("Kişinin yaşı: " + _yas; // Kişinin yaşı konsola yazdırılır
Console.WriteLine("Kişinin departmaanı: " + departman; // Kişinin departmanı konsola yazdırılır
}
}
}C#’ta iki temel veri tipi desteklenmektedir:
- Değer tipindeki veriler (value type): int, long, float, double, decimal, char, bool, byte, short, struct, enum
- Referans tipindeki veriler (reference type): string, object, class, interface, array, delegate
Değer türündeki değişkenler hafızanın stack (yığın) bölgesinde tutulur ve verinin kendisini tutarlar, fakat referans türündeki değişkenler ise, hafızanın heap (öbek) bölgesinde tutulur ve verinin referanslarını tutarlar. String veri tipi teoride referans tipli olmasına rağmen program içerisinde değer tipli olarak işlem görmektedir. Değer tipindeki değişkenler bir metoda parametre olarak aktarıldıklarında, değişkenin bir kopyası metoda gönderilir ve yapılan işlemler sonucunda orijinal değişkenin sahip olduğu eski değer değişmez. Fakat, referans tipindeki değişkenler bir metoda gönderildiklerinde, sadece referansı aktarılır ve yapılan değişiklikler değişkenin orijinal değerini değiştirir.
Değer tipinde veri yapıları:
|
Tür |
Açıklama |
Min ve Max aralık değeri |
|
bool |
True (doğru) false (yanlış) değerlerini tutar |
|
|
byte |
1 byte (8 bit) işaretsiz tamsayı |
0 : 255 |
|
sbyte |
1 byte (8 bit) işaretli tamsayı |
-128 : 127 |
|
int |
4 byte (32 bit) işaretli tamsayı |
-2 147 483 648 : 2 147 483 647 |
|
uint |
4 byte (32 bit) işaretsiz tamsayı |
0 : 4 294 967 295 |
|
short |
2 byte (16 bit) işaretli tamsayı |
-32 768 : 32 767 |
|
ushort |
2 byte (16 bit) işaretsiz tamsayı |
0: 65 635 |
|
long |
8 byte (64 bit) işareti tamsayı |
-9 223 372 036 854 775 808 : 9 223 372 036 854 775 807 |
|
ulong |
8 byte (64 bit) işaretsiz tamsayı |
0 : 18 446 744 073 709 551 615 |
|
float |
4 byte (32 bit) ondalık sayı |
Virgülden sonra 6-7 haneye kadar duyarlı |
|
double |
8 byte (64 bit) ondalık sayı |
Virgülden sonra 15-16 haneye kadar duyarlı |
|
decimal |
16 byte (128 bit) ondalık sayı |
Virgülden sonra 28-29 haneye kadar duyarlı |
|
char |
2 byte (16 bit) |
Bütün Unicode karakterleri tutar |
string |
Referans tipindeki değişkenlerin hafızada kapladıkları alan tuttukları veri miktarı ile orantılı olarak değişir |
Unicode karakterlerden oluşan string |
Veri Türü Dönüşümleri
C# programlama dilinde, bir veri türü başka bir veri türüne dönüştürülebilir, fakat dikkat edilmesi gereken noktalar bulunmaktadır.
Örtülü Dönüşüm (Implicit Conversion): Veri kaybının yaşanmadı durumlarda gerçekleşen dönüşümü ifade eder. Örneğin, long veri tipi boyut olarak int veri tipinden daha kapsamlı olduğu için, int tipinden long tipine veri kaybı yaşanmadan dönüşüm gerçekleşir.
int yas = 20;
long _yas = yas;
Console.WriteLine(yas); // konsola 20 yazılır
Console.WriteLine(_yas); //konsola 20 yazılırAçık Dönüşüm (Explicit Convercion): Bu dönüşüm işlemi sırasında veri kaybı yaşanabilmektedir. Dönüşümün yapılması istenilen veri türü parantez içerisinde atama işleminden önce belirtilir.
float toplam = 2.4f;
int _toplam = (int)toplam;
Console.WriteLine(toplam); // konsola 2.4 yazılır
Console.WriteLine(_toplam); // konsola 2 yazılırKutulama (Boxing) ve Kutudan Çıkarma (Unboxing): Referans ve değer tipindeki veriler arasında dönüşüm yapılmaktadır. Bir int, referans tipine atanırsa Kutulama, tam tersi durumda ise Kutudan Çıkarma işlemi gerçekleşmiş olur.
Kutulama örneği:
int yas = 25;
object _yas = yas;
Console.WriteLine(yas); // konsola 25 yazılır
Console.WriteLine(_yas); //konsola 25 yazılırKutudan Çıkarma örneği:
Object _yas = 30;
int yas = (int)_yas;
Console.WriteLine(_yas); // konsola 30 yazılır
Console.WriteLine(yas); //konsola 30 yazılırKaynak: https://learn.microsoft.com/tr-tr/dotnet/csharp/tour-of-csharp/tutorials/