C'nin geçmişi#
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.
Ö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 Exceptiontüretildiğinden emin olmak için her catch
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 12
Kasım 2023'te yayınlandı
C# 12'ye aşağıdaki özellikler eklendi:
- Birincil oluşturucular - Herhangi bir
class
veyastruct
tü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
struct
dizi 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 readonly
parametre parametreleri, parametre veyain
parametre kullananref
API'ler için daha netlik sağlar.- Herhangi bir türe diğer ad - Diğer ad yönergesini
using
kullanarak 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 dize değişmez değerleri
- Genel matematik desteği
- Genel öznitelikler
- UTF-8 dize değişmez değerleri
- Dize ilişkilendirme ifadelerindeki yeni satırlar
- Liste desenleri
- Dosya yerel türleri
- Gerekli üyeler
- Otomatik varsayılan yapılar
- Sabitte desen eşleşmesi
Span<char>
string
- Genişletilmiş
nameof
kapsam - Sayısal IntPtr
ref
alanları vescoped ref
- Temsilciye geliştirilmiş yöntem grubu dönüştürme
- 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 using
Yönerge -leri- Dosya kapsamlı ad alanı bildirimi
- Genişletilmiş özellik desenleri
- Lambda ifadelerinde iyileştirmeler
- İlişkili dizelere izin ver
const
- Kayıt türleri mühürlenebilir
ToString()
- İyileştirilmiş kesin atama
- Aynı yapıda hem atamaya hem de bildirime izin ver
- Yöntemlerde özniteliğine izin ver
AsyncMethodBuilder
- CallerArgumentExpression özniteliği
#line
Gelişmiş pragma
Önizleme modunda daha fazla özellik sağlandı. Bu özellikleri kullanmak için projenizde olarak ayarlamanız <LangVersion>
Preview
gerekir:
- Bu makalenin devamında genel öznitelikler .
- arabirimlerdeki statik soyut üyeler.
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:
- Records
- 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 , or
ve not
desenleri kullanılarak and
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 zorlar veya vurgular
- Konjonktif
and
desenler her iki desenin de eşleşmesini gerektirir - Ayrık
or
desenlerin eşleşmesi için iki desen gerekir - Olumsuz desenler
not
iç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. Şu örnekleri göz önünde bulundurun:
public static bool IsLetter(this char c) =>
c is >= 'a' and <= 'z' or >= 'A' and <= 'Z';
daha yüksek önceliğe or
sahip olduğunu and
açıkça ifade etmek için isteğe bağlı parantezler ile:
public static bool IsLetterOrSeparator(this char c) =>
c is (>= 'a' and <= 'z') or (>= 'A' and <= 'Z') or '.' or ',';
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:
nint
venuint
tü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
localsinit
kaydetmek 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
new
ifadeleri static
anonim işlevler- Hedef türü koşullu ifadeler
- Döngüler için
foreach
uzantıGetEnumerator()
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, .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 yöntemleri
- 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
stackalloc
baş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ı
in
olduğ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:
-publicsign
derlemelerinin Açık Kaynak Yazılım (OSS) imzasını etkinleştirmek için.-pathmap
kaynak 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
stackalloc
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
. - Bir yapının sabit olduğunu ve üye yöntemlerine parametre olarak
in
geçirilmesi gerektiğini belirtmek için türleri bildirinreadonly struct
. - Bir bağımsız değişkenin
in
baş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 readonly
değ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
. - Ek 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 protected
eriş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
ref
ifadeler:- 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:
async
Main
yöntem- Bir uygulamanın giriş noktası değiştiriciye
async
sahip olabilir.
- Bir uygulamanın giriş noktası değiştiriciye
default
değ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:
- Zaman uyumsuz üyeler
- Arayan bilgisi öznitelikleri
- Kod Projesi: C# 5.0'da Çağıran Bilgi Öznitelikleri
Ç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.
await
Ama async
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 ArrayList
türetilen veya türeten türetilen bir ListInt
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 foreach
bir List
(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ı Dispose bir foreach
IEnumerator döngüde oluşturulan kodun olmasıdır IEnumerator IDisposable.
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
Makale ilk olarak NDepend blog'da yayımlandı, Erik Dietrich ve Patrick Smacchia'nın izniyle.