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'daki dotnet/roslyn deposunda bulunabilir. Belirli bir özelliğin dile ne zaman eklendiğini bulmak için GitHub'daki deposundaki 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 throw deyim veya ifade, atılan nesnenin öğesinden Exceptiontüretildiğinden emin olmak için denetlendi. Benzer şekilde, yakalanan türün türünden catchtüretildiğinden 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ıkta arka plan için dil ve kitaplık arasındaki ilişkiler hakkında 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 readonly-ref readonlyparametre parametreleri, parametre veyarefparametre kullananinAPI'ler için daha netlik sağlar. -
Herhangi bir türe diğer ad - Diğer ad yönergesini
usingkullanarak yalnızca adlandırılmış türleri değil, herhangi bir türü 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 değişmez değerleri, dize ilişkilendirmelerinde yeni satır ve UTF-8 dize değişmez değerleri ile dizelerle çalışma 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ürleri geliştirmeleri
- İlişkili dize işleyicileri
-
global usingYönerge -leri - 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 özniteliğine izin ver
AsyncMethodBuilder - CallerArgumentExpression özniteliği
- C# 10,
#linepragması için yeni bir biçimi destekler.
C# 10, .NET Çalışma Zamanı için seremoni kaldırma, verileri algoritmalardan ayırma ve gelişmiş 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 desteklenir. 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 yıllık tempoya daha fazla geçiş işareti ekler. 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 birlikte çalışma
- Özellikleri sığdırma ve bitirme
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.
girişinde records , eşitlik için değer semantiğini izleyen başvuru türleri için kısa bir söz dizimi sağlanır. Genellikle en düşük davranışı tanımlayan veri kapsayıcılarını tanımlamak için bu türleri kullanırsınız.
Yalnızca init ayarlayıcıları , kayıtlarda yok edici olmayan mutasyon (with ifadeler) 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 , andve or desenleri kullanılarak notbirleş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 zorlar 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önergeleri
localsinitkaydetmek için yönerge atlanabilir.
Performans ve birlikte çalışma
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ının çağıran 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.
Özellikleri sığdırma ve bitirme
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
- Döngüler için
GetEnumerator()uzantıforeachdesteğ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, .NET Core'a özel olarak hedef alan 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:
- Salt okunur üyeler
- Varsayılan arabirim üyeleri
-
Desen eşleştirme geliştirmeleri:
- İfadeleri değiştirme
- Özellik desenleri
- Tanımlama grubu desenleri
- Konumsal desenler
- Bildirimleri kullanma
- Statik yerel işlevler
- Tek kullanımlık başvuru yapıları
- Boş değer atanabilir başvuru 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 sabitlemeden erişebilirsiniz.
- Yerel değişkenleri yeniden atayabilirsiniz
ref. - Dizilerde
stackallocbaşlatıcıları kullanabilirsiniz. - Deyimleri, deseni destekleyen herhangi bir türle kullanabilirsiniz
fixed. - Daha genel kısıtlamalar kullanabilirsiniz.
Mevcut özelliklerde aşağıdaki geliştirmeler yapılmıştır:
- Tanımlama grubu türleriyle ve
==test!=edebilirsiniz. - İfade değişkenlerini daha fazla konumda kullanabilirsiniz.
- Otomatik olarak uygulanan özelliklerin yedekleme alanına öznitelikler ekleyebilirsiniz.
- Bağımsız değişkenler farklı
inolduğunda yöntem çözümlemesi 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 dizinler için bir eşleme sağlamak için.
C# sürüm 7.2
Kasım 2017'de yayınlandı
C# 7.2 birkaç küçük dil özelliği ekledi:
- Dizilerdeki
stackallocbaş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. - Bir yapının sabit olduğunu ve üye yöntemlerine parametre olarak
readonly structgeçirilmesi gerektiğini belirtmek için türleri bildirinin. - Bir bağımsız değişkenin
inbaşvuru tarafından geçirildiğini ancak çağrılan yöntem tarafından değiştirilmediğini belirtmek için parametrelere değiştiriciyi ekleyin. - 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. - Yapı türünün yönetilen belleğe doğrudan eriştiği ve her zaman yığın ayrılması gerektiğini belirtmek için türleri bildirin
ref struct. - 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şkenleri izleyebilir.
- 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
-
defaultdeğişmez değer ifadeleri- Hedef tür çıkarılabildiğinde varsayılan değer ifadelerinde varsayılan değişmez değer ifadelerini kullanabilirsiniz.
- Çıkarsanan demet öğe adları
- Tanımlama grubu öğelerinin adları, çoğu durumda tanımlama grubu 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 damarında bazı evrimsel ve havalı şeyler vardır. Yeni özelliklerden bazıları şunlardır:
- Out değişkenleri
- Tanımlama kümeleri ve yapısızlaştırma
- Desen eşleştirme
- Yerel işlevler
- Genişletilmiş ifade gövdeli üyeler
- Başvuru yerel öğeleri
- Başvuru dönüşleri
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. Vurgulama, anahtar sözcükle kullanılacak değişkenlerin bildirimini out daraltmak ve tanımlama grubu aracılığıyla birden çok dönüş değerine izin vermektir. .NET Core artık herhangi bir işletim sistemini hedeflemektedir ve gözlerini buluta ve taşınabilirliğe sağlam bir şekilde açmıştı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 içeri aktarmalar
- Ö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 bekle
- Yalnızca alıcı ö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 ters ve okunabilir hale getirmek için dil ortaklarını 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. Roslyn'i hizmet olarak yayımladılar. 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ımlanan 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: async zaman uyumsuz programlama için ve await modeli. Önemli özellikler listesi aşağıdadır:
Çağıran bilgi özniteliği, bir ton ortak yansıma koduna başvurmadan çalıştırdığınız bağlamla ilgili bilgileri kolayca almanıza olanak tanır. Tanılama ve günlüğe kaydetme görevlerinde birçok kullanımı vardır.
async Ama await bu yayının gerçek yıldızları. Bu özellikler 2012'de ortaya çıktığında C#, asenkronu birinci sınıf katılımcı olarak dile pişirerek oyunu 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, genel değerleri kullanmanız için size daha fazla güç verir, ancak bunlar biraz akademiktir ve çerçeve ve kitaplık yazarları tarafından büyük olasılıkla 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ı.
dynamic C# sürüm 4.0'da derleme zamanı yazmada derleyiciyi geçersiz kılma özelliğiyle sunulan anahtar sözcük. dinamik anahtar sözcüğünü kullanarak JavaScript gibi dinamik olarak yazılan dillere benzer yapılar oluşturabilirsiniz. Bir oluşturabilir dynamic x = "a string" ve sonra buna altı ekleyebilirsiniz ve bundan sonra ne olacağını sıralamak için çalışma zamanına bırakabilirsiniz.
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 birlikte 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 Visual Studio 2005 ile birlikte 2005'te yayımlanan C# 2.0'ın bazı önemli özelliklerine göz atalım:
- Genel Türler
- Kısmi türler
- Anonim yöntemler
- Null atanabilir değer türleri
- Yineleyiciler
- Kovaryans ve kontravaryans
Diğer C# 2.0 özellikleri, mevcut özelliklere özellikler ekledi:
- Getter/setter ayrı erişilebilirlik
- Yöntem grubu dönüştürmeleri (temsilciler)
- 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, sahip List<T> olmak List<string> , bu dizelerde veya List<int> tamsayılarda yineleme yaparken tür güvenli işlemler yapmanıza veya gerçekleştirmenize olanak tanır. Genel değerleri kullanmak, her işlem için türünden ListInt türetilen veya türeten türetilen bir ArrayList tür oluşturmaktan Object daha iyidir.
C# sürüm 2.0 yineleyiciler getirdi. Bunu kısaca ifade etmek gerekirse, yineleyiciler döngüyle List bir foreach (veya diğer Numaralandırılabilir türler) içindeki tüm öğeleri incelemenize olanak sağlar. 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önderilir. Dille ilgili birkaç küçük geliştirme içeriyordu. En dikkat çekici olan, bu sürümden başlayarak, uygulandığında üzerinde adlı foreach bir DisposeIEnumerator döngüde oluşturulan kodun olmasıdır IEnumeratorIDisposable.
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'ya çok benzerdi. ECMA için belirtilen tasarım hedeflerinin bir parçası olarak, "basit, modern, genel amaçlı nesne odaklı bir dil" olmaya çalıştı. O zamanlar Java gibi bakmak, bu erken tasarım hedeflerine ulaştığı anlamına geliyordu.
Ama şimdi C# 1.0'a bakarsanız, biraz başınızı dönersiniz. Yerleşik zaman uyumsuz özelliklerden ve kabul ettiğiniz genel özelliklerle ilgili bazı karmaşık işlevlerden yoksundu. Aslına bakılırsa, genel değerleri tamamen eksik. LINQ ne olacak? Henüz kullanılamıyor. 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 ayrıntılı kod yazarken bulursunuz. Ama yine de, bir yerden başla. C# sürüm 1.0, Windows platformunda Java'ya uygun bir alternatifti.
C# 1.0'ın başlıca özellikleri şunlardır:
- Sınıflar
- Yapılar
- Arabirimler
- Etkinlikler
- Veri Erişimi
- Temsilciler
- İşleçler ve ifadeler
- Raporlar
- Öznitelikler
Makaleilk olarak NDepend blog'da yayımlandı, Erik Dietrich ve Patrick Smacchia'nın izniyle.