c# 4 0 new features
DESCRIPTION
26 Nisan Ankara' da Yapılan Microsoft etkinliğinde anlattığım C# 4.0 konulu sunumdur.TRANSCRIPT
![Page 1: C# 4 0 New Features](https://reader033.vdocuments.site/reader033/viewer/2022061115/5463f48eaf7959f6118b613e/html5/thumbnails/1.jpg)
C# 4.0 ile Gelen Yenilikler
Burak Selim ŞENYURTMVP(Connected System Developer)
Innova – Uygulama Geliştirme Danışmanı[email protected] http://twitter.com/bsenyurthttp://friendfeed.com/burakselimsenyurt
![Page 2: C# 4 0 New Features](https://reader033.vdocuments.site/reader033/viewer/2022061115/5463f48eaf7959f6118b613e/html5/thumbnails/2.jpg)
Gündem
C# Tarihçesi Dynamic vs Static C# 4.0 Yenilikleri Dynamic Olmak
Demo DLR(Dynamic Language Runtime) Optional & Named Parameters
Demo COM Interop Özellikleri
Demo Co-Contra Variance Generics Soru&Cevap
![Page 3: C# 4 0 New Features](https://reader033.vdocuments.site/reader033/viewer/2022061115/5463f48eaf7959f6118b613e/html5/thumbnails/3.jpg)
C# 1.0 Managed Code Kavramı
C# 2.0 Generic Mimari
C# 3.0 Language INtegrated Query
C# 4.0 Dynamic Programlama
CLR 1.0.Net Framework
1.0/1.1
Tarihçe
CLR 4.0.Net Framework 4.0
CLR 2.0.Net Framework
2.0/3.0/3.5
![Page 4: C# 4 0 New Features](https://reader033.vdocuments.site/reader033/viewer/2022061115/5463f48eaf7959f6118b613e/html5/thumbnails/4.jpg)
Dynamic vs Static
Dynamic
•Bilinçsiz türlendirme(Implicitly Typed)
•Derleme Yok (No Compilation)
•Basit ve kısa
Static
•Güçlü(Robust)
•Rekabet gücü yüksek(Performant)
•Akıllı araçlar(Tools)
•Daha iyi ölçeklenebilirlik(Scale)
Ruby, Python, IronPython... C# ,Vb.Net...
![Page 5: C# 4 0 New Features](https://reader033.vdocuments.site/reader033/viewer/2022061115/5463f48eaf7959f6118b613e/html5/thumbnails/5.jpg)
C# 4.0 Yenilikleri
Dynamic (Dinamik olarak türlendirilebilen nesneler)
Optional ve Named Parametreler Arttırılmış COM Interoperability desteği CoVariance – ContraVariance Generics
![Page 6: C# 4 0 New Features](https://reader033.vdocuments.site/reader033/viewer/2022061115/5463f48eaf7959f6118b613e/html5/thumbnails/6.jpg)
Dynamic Olmak
Python, Ruby gibi dinamik dillerden gelen nesneler,
IDispatch arayüzü ile ulaşılabilen COM nesneleri, Reflection ile erişilen standart .Net tipleri, HTML DOM nesneleri
Static tip kontrolünün atlanıp bunun yerine, tipin çalışma zamanında çözümlenmesi(Resolve).
![Page 7: C# 4 0 New Features](https://reader033.vdocuments.site/reader033/viewer/2022061115/5463f48eaf7959f6118b613e/html5/thumbnails/7.jpg)
Dynamic Olmak
Çağırılabilen üyeler Metod(Method) Özellik(Property) Alan(Field) Indeksleyici(Indexer) Operatör Temsilci Çağırısı(Delegate Invocation)
Kısıtlar Dynamic metod çağrılarında Anonymous
Method’ lar parametre olarak aktarılamaz. Dynamic nesneler üzerinde LINQ sorguları
çalıştırılamaz.
dynamic != var
![Page 8: C# 4 0 New Features](https://reader033.vdocuments.site/reader033/viewer/2022061115/5463f48eaf7959f6118b613e/html5/thumbnails/8.jpg)
Dynamic & IronPython
DEMO
![Page 9: C# 4 0 New Features](https://reader033.vdocuments.site/reader033/viewer/2022061115/5463f48eaf7959f6118b613e/html5/thumbnails/9.jpg)
DLR(Dynamic Language Runtime)
DLR, CLR üzerinde host edilen normal bir Assembly’ dır.
System.Core’ un bir parçasıdır. Static ve Dynamic diller arasında iş
birliği sağlar. .Net Framework 4.0’ ın bir
parçasıdır. IronPyhton, IronRuby,
IronScheme(Codeplex) gibi DLR dilleri vardır.
C# ve VB.Net gibi dillerden host edilmeyi sağlayan program arayüzünü(API) sunar.
dynamic keyword’ ünün çalışma zamanı bileşenleri DLR’ ı kullanır.
![Page 10: C# 4 0 New Features](https://reader033.vdocuments.site/reader033/viewer/2022061115/5463f48eaf7959f6118b613e/html5/thumbnails/10.jpg)
Optional & Named Parameters
Özellike COM nesnelerinin kullanımında tüm parametreleri girme zorunluluğunun ortadan kalkması Parametrelere adları ile istenen sırada erişilebilmesi.
Parametreler için değer verme zorunluluğunun ortadan kalkması.
Office Development!
![Page 11: C# 4 0 New Features](https://reader033.vdocuments.site/reader033/viewer/2022061115/5463f48eaf7959f6118b613e/html5/thumbnails/11.jpg)
Office ile Etkileşim
DEMO
![Page 12: C# 4 0 New Features](https://reader033.vdocuments.site/reader033/viewer/2022061115/5463f48eaf7959f6118b613e/html5/thumbnails/12.jpg)
Optional & Named Parameters
Word.Document document=wordApp.Documents.Open(ref filePath, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing);
Eski Stil;
wrdApp2.Documents.Open(filePath, ReadOnly: isReadOnly);
Yeni Stil;
![Page 13: C# 4 0 New Features](https://reader033.vdocuments.site/reader033/viewer/2022061115/5463f48eaf7959f6118b613e/html5/thumbnails/13.jpg)
COM Interop Özellikleri
Dynamic Import PIA(Primary Interop Assembly) Bağımsız
Derlemek Ref İhlali(Ommiting Ref)
object missing = Missing.Value;
wordApp.Documents.Open(ref filePath, ref missing, ref missing, ref missing.....)
wordApp.Documents.Open(filePath, Missing.Value,
Missing.Value, Missing.Value.....)
![Page 14: C# 4 0 New Features](https://reader033.vdocuments.site/reader033/viewer/2022061115/5463f48eaf7959f6118b613e/html5/thumbnails/14.jpg)
Generic Covariance Generic Contravariance
DEMO
![Page 15: C# 4 0 New Features](https://reader033.vdocuments.site/reader033/viewer/2022061115/5463f48eaf7959f6118b613e/html5/thumbnails/15.jpg)
Covariance
Shape
Rectangle
Circle
Rectangle Shape
List of Rectangles
List of Shapes
![Page 16: C# 4 0 New Features](https://reader033.vdocuments.site/reader033/viewer/2022061115/5463f48eaf7959f6118b613e/html5/thumbnails/16.jpg)
Contravariance
Shape
Rectangle
Circle
Rectangle Shape
Comprasion of
Rectangles
Comprasion of Shapes
![Page 17: C# 4 0 New Features](https://reader033.vdocuments.site/reader033/viewer/2022061115/5463f48eaf7959f6118b613e/html5/thumbnails/17.jpg)
Co-Contra Variance Generics
.Net 4.0 öncesinde generic koleksiyonlar invariance yapıdadır. Sadece tanımlanan tiple çalışılmaktadır.
Ancak .Net 4.0 ile generic tipler CoVariant veya ContraVariant olarak kullanılabilmektedir.
InvarianceBir geri dönüş veya parametre tipinin birebir istenen tipte olması.
CoVariance
Parametre /dönüş tipinin tanımlanandan daha alt bir tip olarak kullanılabilmesi.
A<T> için A<TDerived> kullanılabilmesi
ContraVariance
Parametre/dönüş tipinin tanımlanandan daha üst bir tip olarak kullanılabilmesi.
A<T> için A<TBase> kullanılabilmesi
![Page 18: C# 4 0 New Features](https://reader033.vdocuments.site/reader033/viewer/2022061115/5463f48eaf7959f6118b613e/html5/thumbnails/18.jpg)
Soru & cevap
![Page 19: C# 4 0 New Features](https://reader033.vdocuments.site/reader033/viewer/2022061115/5463f48eaf7959f6118b613e/html5/thumbnails/19.jpg)
Kaynaklar
http://channel9.msdn.com/
http://msdn.microsoft.com/en-gb/vcsharp/dd819407.aspx