Visual C# 4.0

Post on 20-May-2015

1.129 views 2 download

Tags:

description

Burak Selim Şenyurt hocamızın Ankaradaki eğitimde verdiği sunum..

Transcript of Visual C# 4.0

C# 4.0 ile Gelen Yenilikler

Burak Selim ŞENYURTMVP(Connected System Developer)

Innova – Uygulama Geliştirme Danışmanıwww.buraksenyurt.comwww.nedirtv.comselim@bsenyurt.com http://twitter.com/bsenyurthttp://friendfeed.com/burakselimsenyurt

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

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

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...

C# 4.0 Yenilikleri

Dynamic (Dinamik olarak türlendirilebilen nesneler)

Optional ve Named Parametreler Arttırılmış COM Interoperability desteği CoVariance – ContraVariance Generics

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).

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

Dynamic & IronPython

DEMO

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.

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!

Office ile Etkileşim

DEMO

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;

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.....)

Generic Covariance Generic Contravariance

DEMO

Covariance

Shape

Rectangle

Circle

Rectangle Shape

List of Rectangles

List of Shapes

Contravariance

Shape

Rectangle

Circle

Rectangle Shape

Comprasion of

Rectangles

Comprasion of Shapes

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

Soru & cevap