C# programlama dili, Microsoft tarafından ECMA ve ISO standartlarında geliştirilmiş orta seviye bir programlama dilidir. ECMA ve ISO yazılım dünyasında diller konusunda standartları belirleyen en yetkin iki kuruluştur. Microsoft, her ne kadar ilk başlarda bu standartlar çerçevesinde geliştirmeye başlasa da C# 3.0 ile birlikte kendi standardını oluşturmuş ve dili tamamen .NET için geliştirmeye başlamıştır. Dolayısıyla herhangi bir kurum ya da kuruluşa bağlı kalmaksızın, yazılım geliştiricilerin ihtiyaçlarını karşılamak için oldukça kullanışlı, güçlü ve strong typing (strongly typed) programlama dili geliştirilmiştir.
Adının temeli C ve C++ dilinden gelir. C dilinde bir tamsayı değişkenin değerini artırmak için “++” operatörü kullanılır. Bu yüzden C dilinden sonra geliştirilen ve Nesne Yönelimli (Object Oriented) özellikleri taşıyan yeni dil için, C'nin bir fazlası anlamında C++ adı kullanılmıştır. C++'tan sonra geliştirilen C# dili ise adını; ((C++)++) ifadesinde artı işaretlerinin bir araya gelmesinden alır.
Bu dili tasarlayan ekibin başında Anders Hejlsberg bulunur ve C# dilinin geliştirilmesi ona atfedilir. Daha önce Pascal ve Delphi derleyicileri de tasarlamış olan Anders Hejlsberg; yeni geliştirdiği dilde, o dönemin en yaygın ve en beğenilen Nesne Yönelimli dili olan Java'nın söz dizimini temel almıştır.
Bir programlama dili için orta seviye ifadesinin kullanılması, o dilin gücünden kaynaklanmaz. Yazılım dünyasında diller, makine diline ya da günlük konuşma diline yakın olmalarına bağlı olarak düşük, orta ve yüksek seviye diller olarak ifade edilir. Yüksek seviye diller günlük konuşma kalıplarına benzer söz dizimlerine sahiptir. C# hem makine diline, hem de günlük konuşma diline eşit seviyede yer verir ve bundan ötürü orta seviye bir dil olarak nitelenir. C# ile sadece .NET Framework üzerinde değil, DotGNU Portable.Net ve MONO gibi çatılar ile de yazılım geliştirilebilir.
C# dilinin tasarımındaki başlıca hedefler şunlardır:
- Basit, modern, her tür kullanım amacına uygun ve nesne yönelimli bir dil olması,
- Güçlü tipleme kontrolü, dizin sınırları kontrolü ve tanımlanmış değişkenlerin kullanım tespiti gibi özellikler barındırması,
- Programcı portatifliğine sahip olması,
- Sunucu ve gömülü sistemler için tasarlanmış olması,
- C, C++ ve Java dilini kullananların rahatlıkla alışabilecekleri şekilde tasarlanmış olması.
Dildeki Gelişmeler
C#'ıın ilk sürümü olan 1.0 ile birlikte Managed Code özelliği gelmiştir. Henüz oldukça yeni olduğu bu dönemde C#, Java ve C++'dan aldığı pek çok özellik ile birçok yazılım geliştiricisinin ilgisini çekmiştir.
C# programlama dili 2.0 sürümünde şu değişiklikler yer alır:
-
Generics
-
Partial class
-
Anonim metotlar
-
Iterator'lar (Yineleyiciler)
-
Nullable tipler
-
Delegate yapısı
Bir sonraki büyük sürüm C# 3.0'dır. En kapsamlı dil genişlemesinin bu sürümde yaşandığı söylenebilir. C# 3.0 sürümünün içerdiği başlıca yeni özellikler şunlardır:
-
LINQ (Language Integrated Query - Dil Destekli Sorgulama)
-
Lambda expressions
-
Extension metotlar
-
Expression tree
-
Implicit tipler
-
Anonim tipler
C#'ın 4.0 sürümüyle birlikte gelen özellikler ise şu şekildedir:
-
Dynamic yapılar
-
İsimlendirilebilir ve opsiyonel hale gelebilir parametreler
-
Generic co ve contra variance
C# 5.0 ile birlikte çok büyük bir değişiklik olmamıştır:
- Asenkron özellikler
- Caller information
C#'ın şu mevcut son sürümü olan C# 6.0 ile oldukça önemli gelişmeler gelmektedir:
- Hizmet olarak derleyici (Rosylyn)
- Statik tip elemanların namespace'lere import edilmesi
- Exception filtreleri
- Catch/finally bloklarında bekleme
- Otomatik özellik ilklendirme
- Getter-only özellikler için öntanımlı değerler
- Null üretici
- String enterpolasyonu
- Nameof operatörü
- Sözlük ilklendirici
Sürekli geliştirilmekte olan C# dilinin her yeni sürümüyle birlikte, o günün ihtiyaçlarının karşılanması ve programcılar için daha rahat bir geliştirme ortamının sağlanması hedeflenmektedir.
C# dilinin sürümleri ile .NET Framework sürümleri benzeşse de aralarında önemli farklılıklar vardır ve bunların birbirleriyle karıştırılmaması gerekir.