Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu makale, C# dilinin her ana sürümünün geçmişini sağlar. C# ekibi yenilik yapmaya ve yeni özellikler eklemeye devam ediyor. Gelecek sürümler için dikkate alınan özellikler de dahil olmak üzere ayrıntılı dil özelliği durumu, GitHub'da dotnet/roslyn deposunda dotnet/csharplang dosyasına başvurun.
Önemli
C# dili, C# belirtiminin bazı özellikler için standart bir kitaplık olarak tanımladığı tür ve yöntemlere dayanır. .NET platformu bu tür ve yöntemleri bir dizi pakette sunar. Örneklerden biri özel durum işlemedir. Her bir throw deyim veya ifadenin, atılan nesnenin Exception'ten türetildiğinden emin olmak için denetlendiği kontrol edilir. Benzer şekilde, yakalanan türün catch'dan türetilmiş olduğundan emin olmak için her Exception denetlenmektedir. Her sürüm yeni gereksinimler ekleyebilir. Eski ortamlarda en son dil özelliklerini kullanmak için belirli kitaplıkları yüklemeniz gerekebilir. Bu bağımlılıklar, her belirli sürüm için sayfada belgelenmiştir. Bu bağımlılık hakkında bilgi edinmek için dil ve kitaplık arasındaki ilişkiler üzerine daha fazla bilgi edinebilirsiniz.
C# sürüm 14
Kasım 2025'te yayınlandı
C# 14 aşağıdaki yeni özellikleri içerir:
- Uzantı üyeleri
- Null koşullu atama
-
nameofilişkisiz genel türleri destekler -
Span<T>veReadOnlySpan<T>için daha fazla örtük dönüşüm - Basit lambda parametrelerinde değiştiriciler
-
fieldyedeklenen özellikler -
partialolaylar ve oluşturucular - kullanıcı tanımlı bileşik atama işleçleri
C# sürüm 13
Kasım 2024'te yayımlandı
C# 13 aşağıdaki yeni özellikleri içerir:
-
paramskoleksiyonları:paramsdeğiştirici dizi türleriyle sınırlı değildir. Artıkparams'ı tanınan herhangi bir koleksiyon türüyle,Span<T>ve arabirim türleri de dahil olmak üzere, kullanabilirsiniz. - Yeni
locktürü ve semantiği:lockdeyiminin hedefi bir System.Threading.Lockise, derleyici Lock.EnterScope() yöntemini kullanarak özel kapsam girmek için kod oluşturur. tarafından döndürülenref struct, özel kullanım kapsamından çıkmak içinDispose()desenini destekler. - Yeni kaçış dizisi -
\e:\ekarakteri, UnicodeESCAPEiçin karakter sabit kaçış dizisi olarakU+001Bkullanabilirsiniz. - Yöntem gruplarını içeren çözümlemeyi aşırı yüklemek için küçük iyileştirmeler.
- Nesne başlatıcılarda örtük dizin oluşturucu erişimi: Bir nesne başlatıcı ifadesinde artık örtük "uçtan" dizin işleci
^izin verilir. -
refyerel öğeleri veunsafebağlamlarını yineleyicilerde ve asenkron yöntemlerde kullanabilirsiniz. - Arabirimleri uygulamak için
ref structtürlerini kullanabilirsiniz. - Genel türlerdeki tür parametreleri için
ref structtürlerini bağımsız değişken olarak kullanabilirsiniz. - Kısmi özelliklere ve dizin oluşturuculara artık
partialtürlerde izin verilir. - Aşırı yükleme çözümleme önceliği, kitaplık yazarlarının bir aşırı yüklemeyi diğerlerinden daha iyi olarak belirlemesine olanak tanır.
C# sürüm 12
Kasım 2023'te yayınlandı
C# 12'ye aşağıdaki özellikler eklendi:
-
Birincil oluşturucular - Herhangi bir
classveyastructtürde birincil oluşturucular oluşturabilirsiniz. -
Koleksiyon ifadeleri - Herhangi bir koleksiyonu genişletmek için spread öğesi (
..e) dahil olmak üzere koleksiyon ifadelerini belirtmek için yeni bir söz dizimi. -
Satır içi diziler - Satır içi diziler, bir tür içinde sabit boyutlu bir
structdizi oluşturmanıza olanak tanır. - Lambda ifadelerindeki isteğe bağlı parametreler - Lambda ifadelerindeki parametreler için varsayılan değerler tanımlayabilirsiniz.
-
ref readonlyparametreler -ref readonlyparametreleri,refveyainparametreleri kullanan API'ler için daha fazla netlik sağlar. -
Herhangi bir türü diğer ad olarak kullanma - Yalnızca adlandırılmış türleri değil, diğer ad yönergesi
usingkullanarak herhangi bir türü de diğer ad olarak kullanabilirsiniz. - Deneysel öznitelik - Deneysel bir özelliği gösterir.
Ayrıca, Interceptors - Önizleme özelliği olarak yayımlandı.
Genel olarak C# 12, C# kodu yazmanızı daha üretken hale getiren yeni özellikler sağlar. Zaten tanıdığınız söz dizimi daha fazla yerde kullanılabilir. Diğer söz dizimi ilgili kavramlar için tutarlılık sağlar.
C# sürüm 11
Kasım 2022'de yayınlandı
C# 11'de aşağıdaki özellikler eklendi:
- Ham string literal'lar.
- Genel matematik desteği.
- Genel öznitelikler.
- UTF-8 dize sabitleri.
- Dize ilişkilendirme ifadelerindeki yeni satırlar.
- Liste desenleri.
- Dosya yerel türleri.
- Gerekli üyeler.
- Otomatik varsayılan yapılar.
- Sabitte
Span<char>bir desen eşleşmesistring. - Genişletilmiş
nameofkapsam. -
nintveuintanahtar sözcükleri sırasıyla System.IntPtr ve System.UIntPtrSystem.UIntPtr olarak diğer adlandırılır. -
refalanları vescoped ref - Yöntem grubunun temsilciye dönüştürülmesi geliştirildi.
- Uyarı dalgası 7
C# 11, genel matematiği ve bu hedefi destekleyen çeşitli özellikleri tanıtır. Tüm sayı türleri için sayısal algoritmaları bir kez yazabilirsiniz. Gerekli üyeler ve otomatik varsayılan yapılar gibi türlerle struct çalışmayı kolaylaştıracak daha fazla özellik vardır. Ham dize öbekleri, dize ilintilemelerinde yeni satır ve UTF-8 dize öbekleri ile dizelerle çalışmak daha kolay hale gelir. Dosya yerel türleri gibi özellikler kaynak oluşturucuların daha basit olmasını sağlar. Son olarak, liste desenleri desen eşleştirme için daha fazla destek ekler.
C# sürüm 10
Kasım 2021'de yayınlandı
C# 10, C# diline aşağıdaki özellikleri ve geliştirmeleri ekler:
- Kayıt yapıları
- Yapı türlerinin iyileştirilmesi
- İlişkili dize işleyicileri
-
global usingYönergeleri - Dosya kapsamlı ad alanı bildirimi
- Genişletilmiş özellik desenleri
- Lambda ifadeleri, derleyicinin lambda ifadesinden veya yöntem grubundan temsilci türü çıkarabildiği
bir doğal türe sahip olabilir. - Lambda ifadeleri bir dönüş türü, derleyicinin bunu çıkaramayacağı durumlarda, bildirebilir.
- Öznitelikleri lambda ifadelerine uygulanabilir.
- C# 10'da, tüm yer tutucular kendileri sabit dizeler olduğunda,
constkullanılarak dizeler başlatılabilir. - C# 10'da,
sealedtüründeToString'i geçersiz kıldığınızda değiştirici 'ı ekleyebilirsiniz. - Kesin atama ve null-state analizi ile ilgili uyarılar daha doğrudur.
- Aynı çözümleme içinde hem atama hem de bildirim yapılmasına izin verin.
-
Yöntemlerde
AsyncMethodBuilderözniteliğine izin ver - CallerArgumentExpression özniteliği
- C# 10,
#linepragması için yeni bir biçimi destekler.
C# 10, tören kaldırma, algoritmalardan veri ayırma ve .NET Çalışma Zamanı için geliştirilmiş performans temaları üzerinde çalışmaya devam eder.
Özelliklerin çoğu, aynı kavramları ifade etmek için daha az kod yazdığınız anlamına gelir. Kayıt yapıları, kayıt sınıflarının yaptığı yöntemlerin çoğunu sentezler. Yapılar ve anonim türler ifadelerle birlikte kullanılabilir. Genel kullanım yönergeleri ve dosya kapsamlı ad alanı bildirimleri , bağımlılıkları ve ad alanı kuruluşunu daha net ifade ettiğiniz anlamına gelir. Lambda geliştirmeleri , lambda ifadelerini kullanıldıkları yerde bildirmeyi kolaylaştırır. Yeni özellik desenleri ve yapısızlaştırma geliştirmeleri daha kısa kodlar oluşturur.
Yeni ilişkilendirilmiş dize işleyicileri ve AsyncMethodBuilder davranışı performansı artırabilir. Bu dil özellikleri, .NET 6'da performans iyileştirmeleri elde etmek için .NET Çalışma Zamanı'nda uygulandı.
C# 10 ayrıca .NET sürümleri için düzenli yıllık döngüye belirgin bir geçiş işaret eder. Her özellik yıllık bir zaman diliminde tamamlanamadığından, C# 10'da birkaç "önizleme" özelliğini deneyebilirsiniz. Arabirimlerdeki hem genel öznitelikler hem de statik soyut üyeler kullanılabilir, ancak bu önizleme özellikleri son sürümden önce değişebilir.
C# sürüm 9
Kasım 2020'de yayınlandı
C# 9, .NET 5 ile yayımlandı. .NET 5 sürümünü hedefleyen tüm derlemeler için varsayılan dil sürümüdür. Aşağıdaki yeni ve gelişmiş özellikleri içerir:
- Kayıtlar
- Yalnızca init ayarlayıcıları
- Üst düzey deyimler
- Desen eşleştirme geliştirmeleri: ilişkisel desenler ve mantıksal desenler
- Performans ve interoperabilite
- Montaj ve kaplama özellikleri
C# 9, önceki sürümlerden üç temanın devamını verir: tören kaldırma, algoritmalardan veri ayırma ve daha fazla yerde daha fazla desen sağlama.
Üst düzey deyimler , ana programınızın daha kolay okunduğu anlamına gelir. Törene daha az ihtiyaç vardır: ad alanı, Program sınıf ve static void Main() bunların hepsi gereksizdir.
records, eşitlik için değer semantiğine uygun başvuru türleri için kısa bir söz dizimi sağlar. Genellikle en düşük davranışı tanımlayan veri kapsayıcılarını tanımlamak için bu türleri kullanırsınız.
Init-only özellik ayarlayıcıları, kayıtlarda tahribatsız değişiklik (with kod ifadeleri) için yetenek sağlar. C# 9 ayrıca türetilmiş kayıtların sanal yöntemleri geçersiz kılıp temel yöntemin dönüş türünden türetilmiş bir tür döndürebilmesi için birlikte değişken dönüş türleri ekler.
Desen eşleştirme özellikleri çeşitli yollarla genişletildi. Sayısal türler artık aralık desenlerini destekliyor. Desenler, and, or ve not desenleri kullanılarak birleştirilebilir. Daha karmaşık desenleri netleştirmek için parantezler eklenebilir:
C# 9, yeni desen eşleştirme geliştirmeleri içerir:
- Tür desenleri belirli bir türle eşleşen bir nesneyle eşleşir
- Ayraçlı desenler, desen birleşimlerinin önceliğini belirler veya vurgular
-
Konjonktif
anddesenler her iki desenin de eşleşmesini gerektirir -
Ayrık
ordesenlerin eşleşmesi için iki desen gerekir -
Olumsuz desenler
notiçin desenin eşleşmemesi gerekir - İlişkisel desenler , girişin belirli bir sabitten küçük, büyük, küçük veya eşit ya da belirli bir sabitten büyük veya eşit olmasını gerektirir
Bu desenler, desenlerin söz dizimini zenginleştirir. En yaygın kullanımlardan biri, null denetim için yeni bir söz dizimidir:
if (e is not null)
{
// ...
}
Bu desenlerden herhangi biri, desenlere izin verilen herhangi bir bağlamda kullanılabilir: is desen ifadeleri, switch ifadeler, iç içe desenler ve bir switch deyimin case etiketinin deseni.
Başka bir özellik kümesi de C# dilinde yüksek performanslı bilgi işlemi destekler:
-
nintvenuinttürleri, hedef CPU'daki yerel boyutlu tamsayı türlerini modeller. - İşlev işaretçileri temsilci benzeri işlevler sağlarken, temsilci nesnesi oluşturmak için gerekli ayırmaları önler.
- Yönerge sayısını azaltmak için
localsinityönergesi atlanabilir.
Performans ve interoperabilite
Başka bir geliştirme kümesi de kod oluşturucuların işlevsellik eklediği senaryoları destekler:
- Modül başlatıcıları, bir derleme yüklendiğinde çalışma zamanı tarafından çağırılan yöntemlerdir.
- Kısmi yöntemler , yeni erişilebilir değiştiricileri ve geçersiz olmayan dönüş türlerini destekler. Böyle durumlarda bir uygulama sağlanmalıdır.
Uyum ve bitiş özellikleri
C# 9, hem kod yazma hem de okuma amacıyla geliştirici üretkenliğini artıran diğer birçok küçük özellik ekler:
- Hedef tür
newifadeleri -
staticanonim işlevler - Hedef türü koşullu ifadeler
-
GetEnumerator()döngüleri içinforeachuzantısı desteği - Lambda ifadeleri atma parametrelerini bildirebilir
- Öznitelikler yerel işlevlere uygulanabilir
C# 9 sürümü, C# dilini modern, genel amaçlı bir programlama dili olarak tutmak için çalışmaya devam eder. Özellikler modern iş yüklerini ve uygulama türlerini desteklemeye devam eder.
C# sürüm 8.0
Eylül 2019'da yayınlandı
C# 8.0, özellikle .NET Core'a yönelik ilk büyük C# sürümüdür. Bazı özellikler yeni Ortak Dil Çalışma Zamanı (CLR) özelliklerine, diğerleri ise yalnızca .NET Core'a eklenen kitaplık türlerine dayanır. C# 8.0, C# diline aşağıdaki özellikleri ve geliştirmeleri ekler:
- Yalnızca-okunur üyeler
- Varsayılan arabirim üyeleri
-
Desen eşleştirme geliştirmeleri:
- İfadeleri değiştirme
- Özellik desenleri
- Tuple desenleri
- Konumsal örüntüler
- Bildirimleri kullanma
- Statik yerel işlevler
- Tek kullanımlık ref structlar
- Null atanabilir referans türleri
- Zaman uyumsuz akışlar
- Dizinler ve aralıklar
- Null birleşim ataması
- Yönetilmeyen yapılandırılmış türler
- İç içe ifadelerde Stackalloc
- İlişkiliştirilmiş düz metin dizelerinin geliştirilmesi
Varsayılan arabirim üyeleri CLR'de geliştirmeler gerektirir. Bu özellikler .NET Core 3.0 için CLR'ye eklendi. Aralıklar, dizinler ve zaman uyumsuz akışlar, .NET Core 3.0 kitaplıklarında yeni türler gerektirir. Derleyicide uygulanırken null atanabilir başvuru türleri, bağımsız değişkenlerin ve dönüş değerlerinin null durumuyla ilgili anlam bilgisi sağlamak için kitaplıklara açıklama eklendiğinde çok daha kullanışlıdır. Bu ek açıklamalar .NET Core kitaplıklarına ekleniyor.
C# sürüm 7.3
Mayıs 2018'de yayınlandı
C# 7.3 sürümünün iki ana teması vardır. Bir tema, güvenli kodun güvenli olmayan kod kadar yüksek performanslı olmasını sağlayan özellikler sağlar. İkinci tema, mevcut özelliklerde artımlı iyileştirmeler sağlar. Bu sürümde yeni derleyici seçenekleri de eklendi.
Aşağıdaki yeni özellikler, güvenli kod için daha iyi performans temasını destekler:
- Sabit alanlara sabitleme yapmadan erişebilirsiniz.
- Yerel değişkenleri yeniden atayabilirsiniz
ref. -
stackallocdizilerinde başlatıcıları kullanabilirsiniz. -
fixedifadelerini, bir deseni destekleyen herhangi bir türle kullanabilirsiniz. - Daha genel kısıtlamalar kullanabilirsiniz.
Mevcut özelliklerde aşağıdaki geliştirmeler yapılmıştır:
-
==ve!='i demet türleriyle test edebilirsiniz. - İfade değişkenlerini daha fazla konumda kullanabilirsiniz.
- Otomatik olarak uygulanan özelliklerin yedekleme alanına öznitelikler ekleyebilirsiniz.
-
inile bağımsız değişkenler farklı olduğunda yöntem çözümleme süreci geliştirildi. - Aşırı yükleme çözümlemesinde artık daha az belirsiz durum var.
Yeni derleyici seçenekleri şunlardır:
-
-publicsignderlemelerinin Açık Kaynak Yazılım (OSS) imzasını etkinleştirmek için. -
-pathmapkaynak dizinlere eşleme sağlamak amacıyla.
C# sürüm 7.2
Kasım 2017'de yayınlandı
C# 7.2 birkaç küçük dil özelliği ekledi:
-
stackallocdizilerdeki başlatıcılar. - Deseni destekleyen herhangi bir türe sahip deyimleri kullanın
fixed. - Sabit alanlara sabitlemeden erişin.
- Yerel değişkenleri yeniden atayın
ref. -
readonly structtürlerini, bir yapının değişmez olduğunu ve üye yöntemlerineinparametresi olarak geçirilmesi gerektiğini belirtmek için bildirin. - Parametrelere
indeğiştiricisini ekleyin, böylece bir bağımsız değişkenin başvuru ile geçirildiğini ancak çağrılan yöntem tarafından değiştirilmediğini belirtebilirsiniz. - Yöntemin
ref readonlydeğerini başvuruya göre döndürdüğünü ancak bu nesneye yazma işlemine izin vermediğini belirtmek için yöntem dönüşlerinde değiştiriciyi kullanın. -
ref structtürlerini bildirin, böylece bir yapı türünün yönetilen belleğe doğrudan eriştiğini ve her zaman yığında ayrılması gerektiğini belirtmiş olun. - Daha genel kısıtlamalar kullanın.
-
Sonda olmayan adlandırılmış bağımsız değişkenler:
- Konumsal bağımsız değişkenler adlandırılmış bağımsız değişkenlerin ardından yerleştirilebilir.
- Sayısal değişmez değerlerde önde gelen alt çizgi:
- Sayısal değişmez değerler artık yazdırılan basamaklardan önce önde gelen alt çizgilere sahip olabilir.
-
private protectederişim değiştiricisi:- Erişim değiştiricisi
private protected, aynı derlemedeki türetilmiş sınıflar için erişimi etkinleştirir.
- Erişim değiştiricisi
- Koşullu
refifadeler:- Koşullu ifadenin (
?:) sonucu artık bir başvuru olabilir.
- Koşullu ifadenin (
C# sürüm 7.1
Ağustos 2017'de yayınlandı
C#, C# 7.1 ile nokta sürümlerini yayınlamaya başladı. Bu sürüm dil sürümü seçimi yapılandırma öğesini, üç yeni dil özelliğini ve yeni derleyici davranışını ekledi.
Bu sürümdeki yeni dil özellikleri şunlardır:
-
asyncMainyöntem- Bir uygulamanın giriş noktası değiştiriciye
asyncsahip olabilir.
- Bir uygulamanın giriş noktası değiştiriciye
-
defaultliteral ifadeler- Hedef tür çıkarılabildiğinde varsayılan değer ifadelerinde varsayılan değişmez değer ifadelerini kullanabilirsiniz.
- Çıkarsanan tuple öğe adları
- Tuple öğelerinin adları, çoğu durumda tuple başlatma işleminden çıkarılabilir.
- Genel tür parametrelerinde desen eşleştirme
- Türü genel tür parametresi olan değişkenlerde desen eşleştirme ifadelerini kullanabilirsiniz.
Son olarak, derleyicinin iki seçeneği -refout vardır ve -refonly bu seçenek başvuru derlemesi oluşturmayı denetler.
C# sürüm 7.0
Mart 2017'de yayınlandı
C# sürüm 7.0, Visual Studio 2017 ile yayımlandı. Bu sürümde C# 6.0'ın çizgisinde bazı gelişimsel ve havalı özellikler vardır. Yeni özelliklerden bazıları şunlardır:
- Out değişkenleri
- Tuple'lar ve tanımsızlaştırma
- Desen eşleştirme
- Yerel işlevler
- Genişletilmiş ifade gövdeli üyeler
- Başvuru yerel öğeleri
- Ref döndürme
Dahil olan diğer özellikler:
Bu özelliklerin tümü geliştiriciler için yeni özellikler ve her zamankinden daha temiz kod yazma fırsatı sunar. Anahtar sözcük ile kullanılacak değişken bildirimlerini kısaltmak ve demet aracılığıyla birden çok dönüş değerine izin vermek, öne çıkan özellikler arasındadır. .NET Core artık herhangi bir işletim sistemini hedeflemekte ve buluta ve taşınabilirliğe odaklanmaktadır. Bu yeni özellikler, yeni özelliklerin yanı sıra dil tasarımcılarının düşüncelerini ve zamanını da kaplar.
C# sürüm 6.0
Temmuz 2015'te yayınlandı
Visual Studio 2015 ile yayınlanan sürüm 6.0, C# programlamayı daha üretken hale getiren birçok küçük özellik yayımladı. Bunlardan bazıları şunlardır:
- Statik importlar
- Özel durum filtreleri
- Otomatik özellik başlatıcıları
- İfade gövdeli üyeler
- Null yayıcı
- Dize ilişkilendirme
- nameof işleci
Diğer yeni özellikler şunlardır:
- Dizin başlatıcıları
- Catch/finally bloklarında bekleyin
- Yalnızca erişimci (getter) özellikleri için varsayılan değerler
Bu özelliklere birlikte bakarsanız ilginç bir desen görürsünüz. Bu sürümde C#, kodu daha kısa ve okunabilir hale getirmek için dil klişelerini ortadan kaldırmaya başladı. Yani temiz, basit kod hayranları için, bu dil sürümü büyük bir galibiyet oldu.
Kendi başına geleneksel bir dil özelliği olmasa da bu sürümle birlikte bir şey daha yaptılar. Derleyici olarak Roslyn hizmeti yayımlandı. C# derleyicisi artık C# dilinde yazılmıştır ve derleyiciyi programlama çabalarınızın bir parçası olarak kullanabilirsiniz.
C# sürüm 5.0
Ağustos 2012'de yayınlandı
Visual Studio 2012 ile yayınlanan C# sürüm 5.0, dilin odaklanmış bir sürümüdür. Bu sürüm için harcanan çabanın neredeyse tamamı başka bir çığır açan dil kavramına geçti: asenkron programlama için async ve await modeli. Önemli özellikler listesi aşağıdadır:
Çağırıcı bilgi özniteliği, tekrarlanan yansıma kodlarına başvurmadan çalıştırdığınız bağlamla ilgili bilgileri kolayca elde etmenize olanak tanır. Tanılama ve günlüğe kaydetme görevlerinde birçok kullanımı vardır.
Ama async ve await bu yayının gerçek yıldızları. Bu özellikler 2012'de ortaya çıktığında C#, asenkron özelliğini dilin içine birinci sınıf bir özellik olarak entegre ederek algıyı yeniden değiştirdi.
C# sürüm 4.0
Nisan 2010'da yayınlandı
Visual Studio 2010 ile yayınlanan C# sürüm 4.0 bazı ilginç yeni özellikleri kullanıma sunuldu:
- Dinamik bağlama
- Adlandırılmış/isteğe bağlı bağımsız değişkenler
- Genel kovaryan ve kontravariant
- Katıştırılmış birlikte çalışma türleri
Katıştırılmış birlikte çalışma türleri, uygulamanız için COM birlikte çalışma derlemeleri oluşturmanın dağıtım acısını hafifletir. Genel kovaryans ve kontravaryans, generikleri kullanmanız için size daha fazla güç verir, ancak bu kavramlar biraz akademik kalabilir ve muhtemelen çerçeve ve kütüphane yazarları tarafından daha çok takdir edilir. Adlandırılmış ve isteğe bağlı parametreler birçok yöntem aşırı yüklemelerini ortadan kaldırmanıza ve kolaylık sağlamanıza olanak sağlar. Ancak bu özelliklerin hiçbiri tam olarak paradigma olarak değiştirilmemiştir.
En önemli özellik anahtar sözcüğün dynamic kullanıma sunulmasıydı. C# 4.0 sürümünde dynamic anahtar sözcüğü, derleme zamanındaki yazma işlemini üst düzeyde değiştirme yeteneği ile tanıtıldı. dinamik anahtar sözcüğünü kullanarak JavaScript gibi dinamik olarak yazılan dillere benzer yapılar oluşturabilirsiniz. Bir dynamic x = "a string" oluşturun ve ardından buna altı ekleyin, bundan sonra ne olacağını belirlemek çalışma zamanına kalır.
Dinamik bağlama, hata potansiyeli sunar ancak aynı zamanda dil içinde büyük güç sağlar.
C# sürüm 3.0
Kasım 2007'de yayımlandı
C# sürüm 3.0, Visual Studio 2008 ile birlikte 2007'nin sonlarında geldi, ancak dil özelliklerinin tam teknesi aslında .NET Framework sürüm 3.5 ile gelecekti. Bu sürüm, C# büyümesinde önemli bir değişiklik olduğunu işaret etti. C#'i gerçekten genişletilebilir bir programlama dili olarak kurdu. Şimdi bu sürümdeki bazı önemli özelliklere göz atalım:
- Otomatik uygulanan özellikler
- Anonim türler
- Sorgu ifadeleri
- Lambda ifadeleri
- İfade ağaçları
- Uzantı yöntemleri
- Örtük olarak yazılan yerel değişkenler
- Kısmi yöntemler
- Nesne ve koleksiyon başlatıcıları
Geçmişe bakıldığında, bu özelliklerin çoğu hem kaçınılmaz hem de ayrılmaz görünüyor. Hepsi stratejik olarak birbirine uyuyor. Bu C# sürümünün en iyi özelliği, DilLe Tümleşik Sorgu (LINQ) olarak da bilinen sorgu ifadesiydi.
Daha ayrıntılı bir görünüm, LINQ'in oluşturulduğu temel olarak ifade ağaçlarını, lambda ifadelerini ve anonim türleri inceler. Ancak her iki durumda da C# 3.0 devrim niteliğinde bir kavram sundu. C# 3.0, C# dilini karma Nesne Odaklı / İşlevsel bir dile dönüştürmenin temelini oluşturmayı başlattı.
Özel olarak, artık koleksiyonlar üzerinde işlem gerçekleştirmek için SQL stili, bildirim temelli sorgular yazabilirsiniz. Tamsayı listesinin ortalamasını hesaplamak için bir döngü yazmak for yerine, bunu gibi basit bir şekilde list.Average()yapabilirsiniz. Sorgu ifadelerinin ve uzantı yöntemlerinin birleşimi, tamsayıların listesini çok daha akıllı hale getirdi.
C# sürüm 2.0
Kasım 2005'te yayımlandı
Şimdi 2005'te yayınlanan C# 2.0'ın bazı önemli özelliklerine ve Visual Studio 2005'e göz atalım:
- Generikler
- Kısmi türler
- Anonim yöntemler
- Null atanabilir değer türleri
- İteratörler
- Kovaryans ve kontravaryans
Diğer C# 2.0 özellikleri, mevcut özelliklere özellikler ekledi:
- Getter ve setter için ayrı erişilebilirlik
- Yöntem grubu dönüşümleri (delegeler)
- Statik sınıflar
- Temsilci çıkarımı
C# genel bir Nesne Odaklı (OO) dili olarak başlarken, C# sürüm 2.0 bunu aceleyle değiştirdi. Genel türler ile türler ve yöntemler, tür güvenliğini korurken rastgele bir tür üzerinde çalışabilir. Örneğin, bir List<T>'e sahip olduğunuzda, List<string> veya List<int>'ye sahip olabilir ve bu metinler veya tamsayılar üzerinde yineleme yaparken tür güvenli işlemler gerçekleştirebilirsiniz. Genel değerleri kullanmak, her işlem için ListInt türünden türetilen bir ArrayList türü oluşturmaktan veya Object ile tür dönüştürmekten daha iyidir.
C# sürüm 2.0 yineleyiciler getirdi. Bunu kısaca ifade etmek gerekirse, yineleyiciler, bir List döngüsü ile foreach (veya diğer Sayılabilir türler) içindeki tüm öğeleri incelemenize olanak tanır. Dilin birinci sınıf bir parçası olarak yineleyicilere sahip olmak, dilin okunabilirliğini ve insanların kod hakkında mantık yürütme becerisini önemli ölçüde geliştirdi.
C# sürüm 1.2
Nisan 2003'te yayımlandı
C# sürüm 1.2, Visual Studio .NET 2003 ile birlikte gönderildi. Dille ilgili birkaç küçük geliştirme içeriyordu. En dikkat çekici olan, bu sürümden itibaren, foreach adlı bir döngüde, Dispose üzerinde IEnumerator çağrıldığında ve bu IEnumeratorIDisposable uygulandığında oluşturulan koddur.
C# sürüm 1.0
Ocak 2002'de yayımlandı
Geri dönüp baktığınızda, Visual Studio .NET 2002 ile yayınlanan C# sürüm 1.0, Java gibi görünüyordu. ECMA için belirtilen tasarım hedeflerinin bir parçası olarak, "basit, modern, genel amaçlı nesne odaklı bir dil" olmayı hedefliyordu. O dönemde, Java gibi görünmesi bu erken tasarım hedeflerine ulaşıldığı anlamına geliyordu.
Şimdi C# 1.0'a geri dönüp baktığınızda, başınız dönebilir. Yerleşik asenkron özelliklerden ve alışkın olduğunuz genellikler etrafındaki bazı zarif işlevlerden yoksundu. Aslına bakılırsa, genel türler tamamen eksikti. ** Ya LINQ? Henüz mevcut değil. Bu eklemelerin çıkması birkaç yıl sürer.
C# sürüm 1.0, bugünle karşılaştırıldığında özelliklerden arındırılmış görünüyordu. Kendinizi uzun kod yazarken bulursunuz. Ama yine de, bir yerden başla. C# sürüm 1.0, Windows platformundaki Java uygun bir alternatifti.
C# 1.0'ın başlıca özellikleri şunlardır:
- Sınıflar
- Yapılar
- Arayüzler
- Etkinlikler
- Özellikler
- Temsilciler
- İşleçler ve ifadeler
- Raporlar
- Öznitelikler
Makaleilk olarak NDepend blog'da yayımlandı, Erik Dietrich ve Patrick Smacchia'nın izniyle.