c# 4 0 new features

19
4.0 ile Gelen Yenilikler Selim ŞENYURT onnected System Developer) a – Uygulama Geliştirme Danışmanı uraksenyurt.com edirtv.com bsenyurt.com witter.com/bsenyurt riendfeed.com/burakselimsenyurt

Upload: burak-selim-senyurt

Post on 13-Nov-2014

1.800 views

Category:

Technology


0 download

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

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

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

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

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

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

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

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

Dynamic & IronPython

DEMO

Page 9: C# 4 0   New Features

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

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

Office ile Etkileşim

DEMO

Page 12: C# 4 0   New Features

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

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

Generic Covariance Generic Contravariance

DEMO

Page 15: C# 4 0   New Features

Covariance

Shape

Rectangle

Circle

Rectangle Shape

List of Rectangles

List of Shapes

Page 16: C# 4 0   New Features

Contravariance

Shape

Rectangle

Circle

Rectangle Shape

Comprasion of

Rectangles

Comprasion of Shapes

Page 17: C# 4 0   New Features

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

Soru & cevap