http://www.enterprisecoding.com
Build ve     Kod Yaz       Check in                                        Test       Fix    edilebilir     Sebebini      ...
SP1                        3.5                        3.0.Net 1.0   .Net 1.1   .Net 2.0   .Net 4.0 2002       2003      20...
public class Zaman {    public double Saniye;    public double Saat;}public class Zaman {    public double Saniye;      pu...
public class Zaman {    public double Saniye;    public double Saat;}public class Zaman {    public double Saniye;      pu...
public class Zaman {    public double Saniye;    public double Saat;}public class Zaman {    public double Saniye;      pu...
public class Zaman {    public double Saniye;    public double Saat;}public class Zaman {    public double Saniye;    priv...
public class Zaman {    public double Saniye;    private double _saat;    public double Saat {      get { return _saat; } ...
try {     ...}catch (Exception ex){     ...}try {     ...}catch (Exception ex){     ...}Finally {     ...}
try {     File.OpenRead("Olmayanbir.dosya");}catch (Exception ex){     Console.WriteLine("Dosya okunamadı");}try {     Fil...
public interface IInsan { string Adi { get; set; } int Yasi { get; set; } void Konus();}public class Erkek : IInsan { priv...
IInsan insan = new Erkek();Console.WriteLine(insan.Adi);insan = new Kadin();Console.WriteLine(insan.Adi);public class IOgr...
public abstract class Sekil { public abstract void Ciz(int x, int y);}public class Kare: Sekil { public override void Ciz(...
public abstract class Sekil { private string _adi; public string Adi {   get { return _adi; } } public abstract void Ciz(i...
delegate tanımı                                         parametreler            public delegate void Uyari(string mesaj); ...
delegate tanımı                                                       event tanımıpublic delegate void SurecDegistiIsleyic...
Olay bildirimine                                kayıtislem.SurecDegisti += islem_SurecDegisti;..islem.SurecDegisti -= isle...
Özel temsilci                                        (delegate)private SurecDegistiIsleyici _surecDegistiIsleyici;        ...
Olay bildirimine kayıt                                      olunduğuna emin olunprotected virtual void OnSurecDegistiIsley...
delegate
public class Ogrenci {    public string Adi;    public string Bolum;}List<Ogrenci> ogrenciler = new List<Ogrenci> {    new...
public class Ogrenci {    public string Adi;    public string Bolum;}List<Ogrenci> ogrenciler = new List<Ogrenci> {    new...
public class Ogrenci {    public string Adi;    public string Bolum;}List<Ogrenci> ogrenciler = new List<Ogrenci> {    new...
Lambda ifadeler                                                 temsilcilere atanabilirpublic delegate void Uyari(string m...
Lambda ifadeler yerel değişkenleri ve tanımlandıkları metod’a ait parametreleri(dış değişkenleri) kullanabilirler;public d...
Lambda ifadelerince kullanılan dış değişkenlerin değerleri lambda ifadeçağırıldığında hesaplanır;int carpan = 3;Func<int, ...
Genişletme metodunun string                                              türü için olduğunu belirtir public static class S...
public static IEnumerable<int> To(this int ilk, int son){        for (var l = ilk; l <= son; l++)        {                ...
− new        var
var ogrenci = new {Adi = "Fatih", Bolum = "Bil. Müh." }Derleyici tarafından üretilen kod;internal class OtomatikUretilmisT...
var ogrenci = new {Adi = "Fatih", Bolum = "Bil. Müh." }string Adi = "Fatih";string Bolum = "Bil. Müh.";var ogrenci = new {...
var ogrenci1 = new {Adi = "Fatih", Bolum = "Bil. Müh." };var ogrenci2 = new {Adi = "Melis", Bolum = "Deri Müh." };bool son...
object nesne = 1;if (nesne.GetType() == typeof(int)){     Console.WriteLine("Tabiki türü int");}
object nesne = 1;if (nesne.GetType() == typeof(int)){     Console.WriteLine("Tabiki türü int");}nesne = nesne + 1;Yukarıda...
Aşağıdaki kod derleme zamanı hata vermese de çalışma zamanı hata oluşturur;object nesne = 1;if (nesne.GetType() == typeof(...
dynamic nesne = 1;if (nesne.GetType() == typeof(int)){     Console.WriteLine("Tabiki türü int");}dynamic nesne = 1;if (nes...
Dinamik kullanılırken derleyici desteği olmayacağı için geliştirme zamanı koddaha fazla hataya açıktır. Örneğin aşağıdaki ...
Bir önceki örneğin derlenmesi sonucu oluşan C# kodu;internal class Program {   private static void Main(string[] args) {  ...
Sadece sınıflar için           Aynı sınıf üzerinde birden   kullanılabilir                 fazla kullanılamaz[AttributeUsa...
public class Ogrenci {     public string Adi;     public string Bolum; }FieldInfo[] ogrencialanlari = typeof(Ogrenci).GetF...
Ogrenci ogrenciInstance = new Ogrenci {                                            Adi = "Fatih",                         ...
<?xml version="1.0" encoding="utf-8"?><Ogrenci xmlns="http://www.enterprisecoding.com"         Adi="Fatih"         Bolum="...
Xml dokümanı giriş elemanı[XmlRoot(Namespace="http://www.enterprisecoding.com",ElementName="OgrenciListesi")]public class ...
Serileştirilecek türXmlSerializer serializer = new XmlSerializer(typeof(OgrenciListesi));OgrenciListesi ogrenciListesi = n...
<?xml version="1.0" encoding="utf-8"?><OgrenciListesi xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"               ...
<?xml version="1.0" encoding="utf-8"?><OgrenciListesi xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"               ...
XmlSerializer serializer = new XmlSerializer(typeof(OgrenciListesi));using (StreamReader dosya = File.OpenText("ogrenciLis...
public class Ogrenci {    public string Adi;    public string Bolum;}List<Ogrenci> ogrenciler = new List<Ogrenci> {    new...
Aynı sorgunun farklı bir şekilde ifadesi;var bilMuhOgrencileri = from ogrenci in ogrenciler                        where o...
Aynı sorgu, isimler sıralı şekilde; var bilMuhOgrencileri = from ogrenci in ogrenciler                         where ogren...
Bir önceki örnekteki akıcı sözdizimini incelersek;var bilMuhOgrencileri = ogrenciler                        .Where(ogrenci...
Dış değişken kullanırken dikkati elden bırakmamalı;int[] sayilar = { 9, 2, 0, 8, 6, 7, 5, 4, 1, 3 };int limit = 5;var sorg...
static void Main(string[] args) {    Thread t = new Thread(EkranaYaz);    t.Start();      for (int i = 0; i < 999; i++) { ...
static void Main(string[] args) {    Thread t = new Thread(EkranaYaz);    t.Start();    for (int i = 0; i < 999; i++) {   ...
public delegate void ThreadStart();public delegate void ParameterizedThreadStart (object obj);static void Main(string[] ar...
BildirimselEşzamanlılık            Dinamik
2002 - C# 1.0                Managed Kod
2005 - C# 2.0                       Generics2002 - C# 1.0                    Managed Kod
public static IEnumerable<int> To(this int ilk, int son){        for (var l = ilk; l <= son; l++)        {                ...
2007 - C# 3.0                              LINQ    2005 - C# 2.0                          Generics2002 - C# 1.0           ...
List<int> ogrenciIdleri = new List<int>();foreach (Ogrenci ogrenci in ogrenciler){        if (ogrenci.BolumID == 1)       ...
2010 - C# 4.0                                       Dinamik programlama          2007 - C# 3.0                            ...
object hesapMakinesi = HesapMakinesiniGetir();Type hesapMakinesiTuru = hesapMakinesi.GetType();object sonuc = hesapMakines...
Bildirimsel            C# 3.0                        DinamikEşzamanlılık                         C# 4
... - C# v.Next                                          Asenkron Programlama                2010 - C# 4.0                ...
var veri = VeriyiIndir(...);VeriyiIsle(veri);VeriyiIndirAsync(... , veri => {    VeriyiIsle(veri);});
public TResult VeriyiIndir(TParam parametre);…public IAsyncResult BeginVeriyiIndir    (TParam parametre, AsyncCallback ger...
public TResult VeriyiIndir(TParam parametre);…public void VeriyiIndirAsync(TParam parametre);public event VeriIndirTamamla...
private void adresleriBul_Click(object sender, EventArgs e) {    <adresleriBul_Click>d__0 d__ = new <adresleriBul_Click>d_...
[CompilerGenerated]private sealed class <adresleriBul_Click>d__0 {   private bool $__disposing;   private bool $__doFinall...
async void DoWorkAsync() {    var t1 = ProcessFeedAsync("www.acme.com/rss");    var t2 = ProcessFeedAsync("www.xyznews.com...
async void DoWorkAsync() {    var t1 = ProcessFeedAsync("www.acme.com/rss");    var t2 = ProcessFeedAsync("www.xyznews.com...
async void DoWorkAsync() {    var t1 = ProcessFeedAsync("www.acme.com/rss");    var t2 = ProcessFeedAsync("www.xyznews.com...
async void DoWorkAsync() {    var t1 = ProcessFeedAsync("www.acme.com/rss");    var t2 = ProcessFeedAsync("www.xyznews.com...
async void DoWorkAsync() {    var t1 = ProcessFeedAsync("www.acme.com/rss");    var t2 = ProcessFeedAsync("www.xyznews.com...
async void DoWorkAsync() {    var t1 = ProcessFeedAsync("www.acme.com/rss");    var t2 = ProcessFeedAsync("www.xyznews.com...
async void DoWorkAsync() {    var t1 = ProcessFeedAsync("www.acme.com/rss");    var t2 = ProcessFeedAsync("www.xyznews.com...
async void DoWorkAsync() {    var t1 = ProcessFeedAsync("www.acme.com/rss");    var t2 = ProcessFeedAsync("www.xyznews.com...
async void DoWorkAsync() {    var t1 = ProcessFeedAsync("www.acme.com/rss");    var t2 = ProcessFeedAsync("www.xyznews.com...
async void DoWorkAsync() {    var t1 = ProcessFeedAsync("www.acme.com/rss");    var t2 = ProcessFeedAsync("www.xyznews.com...
async void DoWorkAsync() {    var t1 = ProcessFeedAsync("www.acme.com/rss");    var t2 = ProcessFeedAsync("www.xyznews.com...
async void DoWorkAsync() {    var t1 = ProcessFeedAsync("www.acme.com/rss");    var t2 = ProcessFeedAsync("www.xyznews.com...
async void DoWorkAsync() {    var t1 = ProcessFeedAsync("www.acme.com/rss");    var t2 = ProcessFeedAsync("www.xyznews.com...
async void DoWorkAsync() {    var t1 = ProcessFeedAsync("www.acme.com/rss");    var t2 = ProcessFeedAsync("www.xyznews.com...
async void DoWorkAsync() {    var t1 = ProcessFeedAsync("www.acme.com/rss");    var t2 = ProcessFeedAsync("www.xyznews.com...
async void DoWorkAsync() {    var t1 = ProcessFeedAsync("www.acme.com/rss");    var t2 = ProcessFeedAsync("www.xyznews.com...
private void adresleriBul_Click(object sender, EventArgs e) {   var adress = "http://www.enterprisecoding.com/blog/";   va...
delegate void EslesimleriEkleCallback(MatchCollection eslesimler);private void adresleriBul_Click(object sender, EventArgs...
private async void adresleriBul_Click(object sender, EventArgs e) {   var adress = "http://www.enterprisecoding.com/blog/"...
... - C# v.Next Next                                                CaaS                    ... - C# v.Next               ...
SınıfMeta-programlama                                   Oku-Çalıştır-Yaz                    public               Foo      ...
3D Derinlik Algılayıcıları                 RGB KameraÇoklu Mikrofon Dizisi      Hareket Motoru
ShoulderRight                         ShoulderLeft     ElbowRight                        Head                    ElbowLeft...
http://www.enterprisecoding.com
C#, Microsoft Yaz Okulu 2011 - İzmir
C#, Microsoft Yaz Okulu 2011 - İzmir
C#, Microsoft Yaz Okulu 2011 - İzmir
C#, Microsoft Yaz Okulu 2011 - İzmir
C#, Microsoft Yaz Okulu 2011 - İzmir
C#, Microsoft Yaz Okulu 2011 - İzmir
C#, Microsoft Yaz Okulu 2011 - İzmir
C#, Microsoft Yaz Okulu 2011 - İzmir
C#, Microsoft Yaz Okulu 2011 - İzmir
C#, Microsoft Yaz Okulu 2011 - İzmir
C#, Microsoft Yaz Okulu 2011 - İzmir
C#, Microsoft Yaz Okulu 2011 - İzmir
C#, Microsoft Yaz Okulu 2011 - İzmir
C#, Microsoft Yaz Okulu 2011 - İzmir
C#, Microsoft Yaz Okulu 2011 - İzmir
C#, Microsoft Yaz Okulu 2011 - İzmir
C#, Microsoft Yaz Okulu 2011 - İzmir
C#, Microsoft Yaz Okulu 2011 - İzmir
C#, Microsoft Yaz Okulu 2011 - İzmir
C#, Microsoft Yaz Okulu 2011 - İzmir
C#, Microsoft Yaz Okulu 2011 - İzmir
C#, Microsoft Yaz Okulu 2011 - İzmir
C#, Microsoft Yaz Okulu 2011 - İzmir
C#, Microsoft Yaz Okulu 2011 - İzmir
C#, Microsoft Yaz Okulu 2011 - İzmir
C#, Microsoft Yaz Okulu 2011 - İzmir
Upcoming SlideShare
Loading in …5
×

C#, Microsoft Yaz Okulu 2011 - İzmir

862 views

Published on

2011 yılı Microsoft yaz okulu izmir'de gerçekleştirdiğim C# eğitimi sunumu

Published in: Technology, Business
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
862
On SlideShare
0
From Embeds
0
Number of Embeds
148
Actions
Shares
0
Downloads
0
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide
  • This is the fully animated slide.
  • C#, Microsoft Yaz Okulu 2011 - İzmir

    1. 1. http://www.enterprisecoding.com
    2. 2. Build ve Kod Yaz Check in Test Fix edilebilir Sebebini Build evetEvet mi?? araştır hayır başarılı mı? Hayır Tüm ekip bekler Gated Automate Kod Yaz check-in d build Check-in’i Test için kaydet Build hayır hazır (commit) evet başarılı mı?
    3. 3. SP1 3.5 3.0.Net 1.0 .Net 1.1 .Net 2.0 .Net 4.0 2002 2003 2005-08 2010CLR 1.0 CLR 1.1 CLR 2.0 CLR 4.0
    4. 4. public class Zaman { public double Saniye; public double Saat;}public class Zaman { public double Saniye; public double GetSaat(){ return saniye/3600; } public void SetSaat(double value){ saniye = value * 3600; }}...Zaman zaman = new Zaman();zaman.SetSaat(3);
    5. 5. public class Zaman { public double Saniye; public double Saat;}public class Zaman { public double Saniye; public double Saat{ get{ return saniye/3600;} set{ saniye = value * 3600;} }}...Zaman zaman = new Zaman();zaman.Saat = 3;
    6. 6. public class Zaman { public double Saniye; public double Saat;}public class Zaman { public double Saniye; public double Saat{ get{ return saniye/3600;} }}...Zaman zaman = new Zaman();zaman.Saat = 3;
    7. 7. public class Zaman { public double Saniye; public double Saat;}public class Zaman { public double Saniye; private double _saat; public double Saat { get { return _saat; } set { _saat = value; }; }}
    8. 8. public class Zaman { public double Saniye; private double _saat; public double Saat { get { return _saat; } set { _saat = value; }; }}public class Zaman { public double Saniye; public double Saat { get; set; }}
    9. 9. try { ...}catch (Exception ex){ ...}try { ...}catch (Exception ex){ ...}Finally { ...}
    10. 10. try { File.OpenRead("Olmayanbir.dosya");}catch (Exception ex){ Console.WriteLine("Dosya okunamadı");}try { File.OpenRead("Olmayanbir.dosya");}catch (FileNotFoundException fnex){ Console.WriteLine("Dosya bulunamadı");}catch (Exception ex){ Console.WriteLine("Beklenmeye bir hata oluştu");}
    11. 11. public interface IInsan { string Adi { get; set; } int Yasi { get; set; } void Konus();}public class Erkek : IInsan { private string _adi public string Adi { get { return _adi; } set { _adi = value; } }private int _yasipublic int Yasi { get { return _yasi; } set { _yas = value; } } public void Konus(){ //... }}
    12. 12. IInsan insan = new Erkek();Console.WriteLine(insan.Adi);insan = new Kadin();Console.WriteLine(insan.Adi);public class IOgrenci : IInsan { //...}
    13. 13. public abstract class Sekil { public abstract void Ciz(int x, int y);}public class Kare: Sekil { public override void Ciz(int x, int y){ //kare çizim kodu }}Sekil sekil = new Kare();Console.WriteLine(sekil.Adi);Sekil.Ciz(0, 0);
    14. 14. public abstract class Sekil { private string _adi; public string Adi { get { return _adi; } } public abstract void Ciz(int x, int y);}public class Kare: Sekil { public override void Ciz(int x, int y){ //kare çizim kodu }}
    15. 15. delegate tanımı parametreler public delegate void Uyari(string mesaj); . . atama . Uyari uyari = delegate(string mesaj) { MessageBox.Show(mesaj); }; uyari("Hatalı değer girildi"); . . kullanımı uyari("Lütfen yeniden deneyiniz"); uyari = delegate{ MessageBox.Show("Hata oluştu"); Alternatif }; tanımlama uyari("kullanımayan parametre");
    16. 16. delegate tanımı event tanımıpublic delegate void SurecDegistiIsleyici(int tamamlanmaOrani);public event SurecDegistiIsleyici SurecDegisti;islem.SurecDegisti += new SurecDegistiIsleyici(islem_SurecDegisti);void islem_SurecDegisti(int tamamlanmaOrani) { Olay bildirimine . . kayıt} Olay gerçekleştiğinde işletilecek süreç
    17. 17. Olay bildirimine kayıtislem.SurecDegisti += islem_SurecDegisti;..islem.SurecDegisti -= islem_SurecDegisti; Olay bildirimine kaydı silme
    18. 18. Özel temsilci (delegate)private SurecDegistiIsleyici _surecDegistiIsleyici; Olay bildiriminepublic event SurecDegistiIsleyici SurecDegisti { kayıt add { _surecDegistiIsleyici += value; } remove { _surecDegistiIsleyici -= value; }} Olay bildirimine kaydı silme
    19. 19. Olay bildirimine kayıt olunduğuna emin olunprotected virtual void OnSurecDegistiIsleyici(int tamamlanmaOrani) { if (SurecDegistiIsleyici != null) { SurecDegistiIsleyici(tamamlanmaOrani); }} Olay bildirimini tetikleyin
    20. 20. delegate
    21. 21. public class Ogrenci { public string Adi; public string Bolum;}List<Ogrenci> ogrenciler = new List<Ogrenci> { new Ogrenci{ Adi = "Duru", Bolum = "Bil. Müh." }, new Ogrenci{ Adi = "Fatih", Bolum = "Bil. Müh." }, new Ogrenci{ Adi = "Melis", Bolum = "Deri Müh." }};Bilgisayar mühendisi olan öğrencilerin listesi;List<Ogrenci> bilMuhOgrencileri = new List<Ogrenci>();foreach (Ogrenci ogrenci in ogrenciler) { if (ogrenci.Bolum == "Bil. Müh.") { bilMuhOgrencileri.Add(ogrenci); }}
    22. 22. public class Ogrenci { public string Adi; public string Bolum;}List<Ogrenci> ogrenciler = new List<Ogrenci> { new Ogrenci{ Adi = "Duru", Bolum = "Bil. Müh." }, new Ogrenci{ Adi = "Fatih", Bolum = "Bil. Müh." }, new Ogrenci{ Adi = "Melis", Bolum = "Deri Müh." }};List<Ogrenci> bilMuhOgrencileri = ogrenciler.FindAll( delegate(Ogrenci ogrenci) { return ogrenci.Bolum == "Bil. Müh."; });
    23. 23. public class Ogrenci { public string Adi; public string Bolum;}List<Ogrenci> ogrenciler = new List<Ogrenci> { new Ogrenci{ Adi = "Duru", Bolum = "Bil. Müh." }, new Ogrenci{ Adi = "Fatih", Bolum = "Bil. Müh." }, new Ogrenci{ Adi = "Melis", Bolum = "Deri Müh." }};List<Ogrenci> bilMuhOgrencileri = ogrenciler.FindAll(ogrenci =>ogrenci.Bolum == "Bil. Müh.");List<Ogrenci> bilMuhOgrencileri = ogrenciler.FindAll((Ogrenciogrenci) => ogrenci.Bolum == "Bil. Müh.");
    24. 24. Lambda ifadeler temsilcilere atanabilirpublic delegate void Uyari(string mesaj);...Uyari uyari = mesaj => MessageBox.Show(mesaj);uyari("Hatalı değer girildi");..uyari("Lütfen yeniden deneyiniz");
    25. 25. Lambda ifadeler yerel değişkenleri ve tanımlandıkları metod’a ait parametreleri(dış değişkenleri) kullanabilirler;public delegate void Uyari(string mesaj);...string varsayilanMesaj = "Hata Oluştu";Uyari uyari = mesaj => MessageBox.Show(mesaj ?? varsayilanMesaj);uyari("Hatalı değer girildi");..uyari(null);
    26. 26. Lambda ifadelerince kullanılan dış değişkenlerin değerleri lambda ifadeçağırıldığında hesaplanır;int carpan = 3;Func<int, int> carpim = x => x * carpan;int sonuc1 = carpim(2); // sonuc1 = 6carpan = 10;int sonuc2 = carpim(2); // sonuc2 = 20• Bir dış değişkenin değeri lambda ifade içerisinde değiştirilebilir• Lambda ifade içerisinde tanımlanan değişkenler her çağırım için tekildirler
    27. 27. Genişletme metodunun string türü için olduğunu belirtir public static class StringEx { public static bool BosYadaBoslukMu(this string stringIfade) { return string.IsNullOrEmpty(stringIfade) || stringIfade.Trim() == string.Empty; } }Örnek kullanım;string ornek = "Örnek";Console.Write(ornek.BosYadaBoslukMu());Derleyici taradından oluşturulan kod;string ornek = "Örnek";Console.Write(StringEx.BosYadaBoslukMu(ornek));
    28. 28. public static IEnumerable<int> To(this int ilk, int son){ for (var l = ilk; l <= son; l++) { yield return l; }}foreach (int i in 5.To(15)){ j = i*i;}
    29. 29. − new var
    30. 30. var ogrenci = new {Adi = "Fatih", Bolum = "Bil. Müh." }Derleyici tarafından üretilen kod;internal class OtomatikUretilmisTurAdi{ private string adi; //gercekte farkli bir ad verilebilir private int bolum; //gercekte farkli bir ad verilebilir public OtomatikUretilmisTurAdi (string adi, string bolum) { this.adi = adi; this.bolum = bolum; } public string Adi { get { return adi; } } public string Bolum { get { return bolum; } }}var ogrenci = new OtomatikUretilmisTurAdi("Fatih", "Bil. Müh.");
    31. 31. var ogrenci = new {Adi = "Fatih", Bolum = "Bil. Müh." }string Adi = "Fatih";string Bolum = "Bil. Müh.";var ogrenci = new {Adi, Bolum };string Adi = "Fatih";string Bolum = "Bil. Müh.";var ogrenci = new {Adi = Adi, Bolum = Bolum };
    32. 32. var ogrenci1 = new {Adi = "Fatih", Bolum = "Bil. Müh." };var ogrenci2 = new {Adi = "Melis", Bolum = "Deri Müh." };bool sonuc = ogrenci1.GetType() == ogrenci2.GetType(); //true
    33. 33. object nesne = 1;if (nesne.GetType() == typeof(int)){ Console.WriteLine("Tabiki türü int");}
    34. 34. object nesne = 1;if (nesne.GetType() == typeof(int)){ Console.WriteLine("Tabiki türü int");}nesne = nesne + 1;Yukarıdaki kodun derlenebilmesi için int türüne dönüşüm gerekli;object nesne = 1;if (nesne.GetType() == typeof(int)){ Console.WriteLine("Tabiki türü int");}nesne = (int)nesne + 1;
    35. 35. Aşağıdaki kod derleme zamanı hata vermese de çalışma zamanı hata oluşturur;object nesne = 1;if (nesne.GetType() == typeof(int)){ Console.WriteLine("Tabiki türü int");}nesne = (string)nesne + 1;
    36. 36. dynamic nesne = 1;if (nesne.GetType() == typeof(int)){ Console.WriteLine("Tabiki türü int");}dynamic nesne = 1;if (nesne.GetType() == typeof(int)){ Console.WriteLine("Tabiki türü int");}nesne = nesne + 1
    37. 37. Dinamik kullanılırken derleyici desteği olmayacağı için geliştirme zamanı koddaha fazla hataya açıktır. Örneğin aşağıdaki kod derleme zamanı hata vermezkençalışma zamanında hataya neden olacaktır;dynamic nesne = 1;if (nesne.GetType() == typeof(int)){ Console.WriteLine("Tabiki türü int");}Nesne.VarolmayanBirMetod();
    38. 38. Bir önceki örneğin derlenmesi sonucu oluşan C# kodu;internal class Program { private static void Main(string[] args) { object nesne = 1; if (<ma IN>o__SiteContainer0.<>p__Site1 == null) { <ma IN>o__SiteContainer0.<>p__Site1 = CallSite<func><calls ITE, object, bool>>.Create( Binder.UnaryOperation(CSharpBinderFlags.None, ExpressionType.IsTrue, typeof(Program), new CSharpArgumentInfo[] { CSharpArgumentInfo.Create(CSharpArgumentInfoFlags.None, null) })); } if (<ma IN>o__SiteContainer0.<>p__Site2 == null) { <ma IN>o__SiteContainer0.<>p__Site2 = CallSite<func><calls ITE, object, Type, object>>.Create( Binder.BinaryOperation(CSharpBinderFlags.None, ExpressionType.Equal, typeof(Program), new CSharpArgumentInfo[] { CSharpArgumentInfo.Create(CSharpArgumentInfoFlags.None, null), CSharpArgumentInfo.Create(CSharpArgumentInfoFlags.UseCompileTimeType, null) })); } if (<ma IN>o__SiteContainer0.<>p__Site3 == null) { <ma IN>o__SiteContainer0.<>p__Site3 = CallSite<func><calls ITE, object, object>>.Create( Binder.InvokeMember(CSharpBinderFlags.None, "GetType", null, typeof(Program), new CSharpArgumentInfo[] { CSharpArgumentInfo.Create(CSharpArgumentInfoFlags.None, null) })); } if (<ma IN>o__SiteContainer0.<>p__Site1.Target.Invoke(<ma IN>o__SiteContainer0.<>p__Site1, <ma IN>o__SiteContainer0.<>p__Site2.Target.Invoke(<ma IN>o__SiteContainer0.<>p__Site2, <ma IN>o__SiteContainer0.<>p__Site3.Target.Invoke( <ma IN>o__SiteContainer0.<>p__Site3, nesne), typeof(int)))) { Console.WriteLine("Tabi ki tx00fcrx00fc int"); } else { Console.WriteLine("Tx00fcm makale hatalıymış :P"); } if (<ma IN>o__SiteContainer0.<>p__Site4 == null) { <ma IN>o__SiteContainer0.<>p__Site4 = CallSite<func><calls ITE, object, object int,>>.Create( Binder.BinaryOperation(CSharpBinderFlags.None, ExpressionType.Add, typeof(Program), new CSharpArgumentInfo[] { CSharpArgumentInfo.Create(CSharpArgumentInfoFlags.None, null), CSharpArgumentInfo.Create(CSharpArgumentInfoFlags.Constant | CSharpArgumentInfoFlags.UseCompileTimeType, null) })); } nesne = <ma IN>o__SiteContainer0.<>p__Site4.Target.Invoke(<ma IN>o__SiteContainer0.<>p__Site4, nesne, 1); } [CompilerGenerated] private static class <ma IN>o__SiteContainer0 { public static CallSite<func><calls ITE, object, bool>> <>p__Site1; public static CallSite<func><calls ITE, object, Type, object>> <>p__Site2; public static CallSite<func><calls ITE, object, object>> <>p__Site3; public static CallSite<func><calls ITE, object, object int,>> <>p__Site4; } }
    39. 39. Sadece sınıflar için Aynı sınıf üzerinde birden kullanılabilir fazla kullanılamaz[AttributeUsage( AttributeTargets.Class, AllowMultiple = false, Inherited = false)] public class OrnekAttribute : Attribute { }Alt sınıflarda tanımlı değil Bir öznitelik tanımlandığını belirtir
    40. 40. public class Ogrenci { public string Adi; public string Bolum; }FieldInfo[] ogrencialanlari = typeof(Ogrenci).GetFields( BindingFlags.Public | BindingFlags.Instance);foreach (var ogrenciAlani in ogrencialanlari) { Console.WriteLine("Alan :" + ogrenciAlani.Name);}Çıktı; Alan : Adi Alan : Bolum
    41. 41. Ogrenci ogrenciInstance = new Ogrenci { Adi = "Fatih", Bolum = "Bil. Müh." };Yukarıdaki ifadenin reflection karşılığı;Type ogrenciType = Type.GetType("Ogrenci");object ogrenciInstace = Activator.CreateInstance(ogrenciType);FieldInfo adiAlani = ogrenciType.GetField("Adi");FieldInfo bolumAlani = ogrenciType.GetField("Bolum");adiAlani.SetValue(ogrenciInstace, "Fatih");bolumAlani.SetValue(ogrenciInstace, "Bil. Müh.");
    42. 42. <?xml version="1.0" encoding="utf-8"?><Ogrenci xmlns="http://www.enterprisecoding.com" Adi="Fatih" Bolum="Bil. Müh." /> Tür’ün tanımlı olacağı xml Xml tür adı isimuzayı[XmlType(Namespace="http://www.enterprisecoding.com",TypeName="Ogrenci")]public class Ogrenci { [XmlAttribute] public string Adi; Veri elemanının xml içerisinde ne şekilde tutulacağını belirtir [XmlAttribute] public string Bolum;}
    43. 43. Xml dokümanı giriş elemanı[XmlRoot(Namespace="http://www.enterprisecoding.com",ElementName="OgrenciListesi")]public class OgrenciListesi { Xml içerisinde oluşturulacak [XmlArray(ElementName="Ogrenciler")] array tanımlaması [XmlArrayItem(ElementName="Ogrenci")] public Ogrenci[] Ogrenciler;} Xml içerisinde oluşturulacak array elemanlarının tanımlaması
    44. 44. Serileştirilecek türXmlSerializer serializer = new XmlSerializer(typeof(OgrenciListesi));OgrenciListesi ogrenciListesi = new OgrenciListesi { Ogrenciler = new[] { new Ogrenci{ Adi = "Ali", Bolum = "Bil. Müh." }, new Ogrenci{ Adi = "Fatih", Bolum = "Bil. Müh." }, new Ogrenci{ Adi = "Melis", Bolum = "Deri Müh." } }};using (StreamWriter dosya = File.CreateText("ogrenciListesi.xml")) { serializer.Serialize(dosya, ogrenciListesi);} Serileştirmenin yapılacağı Serileştirilecek nesne stream
    45. 45. <?xml version="1.0" encoding="utf-8"?><OgrenciListesi xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://www.enterprisecoding.com"> <Ogrenciler> <Ogrenci Adi="Ali" Bolum="Bil. Müh." /> <Ogrenci Adi="Fatih" Bolum="Bil. Müh." /> <Ogrenci Adi="Melis" Bolum="Deri Müh." /> </Ogrenciler></OgrenciListesi>
    46. 46. <?xml version="1.0" encoding="utf-8"?><OgrenciListesi xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://www.enterprisecoding.com"> <Ogrenciler> <Ogrenci Adi="Ali" Bolum="Bil. Müh." /> <Ogrenci Adi="Fatih" Bolum="Bil. Müh." /> <Ogrenci Adi="Melis" Bolum="Deri Müh." /> </Ogrenciler></OgrenciListesi>
    47. 47. XmlSerializer serializer = new XmlSerializer(typeof(OgrenciListesi));using (StreamReader dosya = File.OpenText("ogrenciListesi.xml")) { var ogrenciListesi=(OgrenciListesi)serializer.Deserialize(dosya); . . .}
    48. 48. public class Ogrenci { public string Adi; public string Bolum;}List<Ogrenci> ogrenciler = new List<Ogrenci> { new Ogrenci{ Adi = "Ali", Bolum = "Bil. Müh." }, new Ogrenci{ Adi = "Fatih", Bolum = "Bil. Müh." }, new Ogrenci{ Adi = "Melis", Bolum = "Deri Müh." }};var bilMuhOgrencileri = ogrenciler.Where(ogrenci => ogrenci.Bolum =="Bil. Müh.");
    49. 49. Aynı sorgunun farklı bir şekilde ifadesi;var bilMuhOgrencileri = from ogrenci in ogrenciler where ogrenci.Bolum == "Bil. Müh." select ogrenci;Sadece öğrencilerin adını sorgulamak için; var bilMuhOgrencileri = from ogrenci in ogrenciler where ogrenci.Bolum == "Bil. Müh." select ogrenci.Adi;
    50. 50. Aynı sorgu, isimler sıralı şekilde; var bilMuhOgrencileri = from ogrenci in ogrenciler where ogrenci.Bolum == "Bil. Müh." orderby ogrenci.Adi ascending select ogrenci; Sorgu Sözdizimi (Query Syntax/Query Expression Syntax)Başka bir ifade ile; var bilMuhOgrencileri = ogrenciler .Where(ogrenci => ogrenci.Bolum == "Bil. Müh.") .OrderBy(ogrenci => ogrenci.Adi) .Select(ogrenci => ogrenci); Akıcı Sözdizimi (Fluent Syntax)
    51. 51. Bir önceki örnekteki akıcı sözdizimini incelersek;var bilMuhOgrencileri = ogrenciler .Where(ogrenci => ogrenci.Bolum == "Bil. Müh.") .OrderBy(ogrenci => ogrenci.Adi) .Select(ogrenci => ogrenci);var filtrelenmis = ogrenciler.Where(ogrenci=>ogrenci.Bolum=="Bil. Müh.");var siralanmıs = filtrelenmis.OrderBy(ogrenci => ogrenci.Adi);var sorgu = siralanmıs.Select(ogrenci => ogrenci);
    52. 52. Dış değişken kullanırken dikkati elden bırakmamalı;int[] sayilar = { 9, 2, 0, 8, 6, 7, 5, 4, 1, 3 };int limit = 5;var sorgu = from sayi in sayilar where sayi > limit select sayi;int[] limitUstuSayilara1 = sorgu.ToArray(); // 9, 8, 6, 7limit = 3;int[] limitUstuSayilara2 = sorgu.ToArray(); // 9, 8, 6, 7, 5, 4
    53. 53. static void Main(string[] args) { Thread t = new Thread(EkranaYaz); t.Start(); for (int i = 0; i < 999; i++) { Console.Write("-"); }}private static void EkranaYaz() { for (int i = 0; i < 999; i++) { Console.Write("*"); }}Program çıktısı;------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------****************************************************************************************************************************************----------------------------------------------------------------------------------------------------------------------------------------
    54. 54. static void Main(string[] args) { Thread t = new Thread(EkranaYaz); t.Start(); for (int i = 0; i < 999; i++) { Başlatılan thread’in Console.Write("-"); bitmesi beklenir } t.Join();}private static void EkranaYaz() { for (int i = 0; i < 999; i++) { Console.Write("*"); }}
    55. 55. public delegate void ThreadStart();public delegate void ParameterizedThreadStart (object obj);static void Main(string[] args) { Thread t = new Thread(EkranaYaz); t.Start("*"); for (int i = 0; i < 999; i++) { Console.Write("-"); } t.Join();}private static void EkranaYaz(object mesaj) { for (int i = 0; i < 999; i++) { Console.Write(mesaj as string); }}
    56. 56. BildirimselEşzamanlılık Dinamik
    57. 57. 2002 - C# 1.0 Managed Kod
    58. 58. 2005 - C# 2.0 Generics2002 - C# 1.0 Managed Kod
    59. 59. public static IEnumerable<int> To(this int ilk, int son){ for (var l = ilk; l <= son; l++) { yield return l; }}foreach (int i in 5.To(15)){ j = i*i;}
    60. 60. 2007 - C# 3.0 LINQ 2005 - C# 2.0 Generics2002 - C# 1.0 Managed Kod
    61. 61. List<int> ogrenciIdleri = new List<int>();foreach (Ogrenci ogrenci in ogrenciler){ if (ogrenci.BolumID == 1) { ogrenciIdleri.Add(ogrenci.ID); }}var ogrenciIdleri = ogrenciler .Where(ogrenci => ogrenci.BolumID == 1) .Select(ogrenci => ogrenci.ID);var ogrenciIdleri = from ogrenci in ogrenciler where ogrenci.BolumID == 1 select ogrenci.ID;
    62. 62. 2010 - C# 4.0 Dinamik programlama 2007 - C# 3.0 LINQ 2005 - C# 2.0 Generics2002 - C# 1.0 Managed Kod
    63. 63. object hesapMakinesi = HesapMakinesiniGetir();Type hesapMakinesiTuru = hesapMakinesi.GetType();object sonuc = hesapMakinesiTuru.InvokeMember("Ekle",BindingFlags.InvokeMethod, null, hesapMakinesi, new object[] { 1, 2});int toplam = Convert.ToInt32(sonuc);dynamic hesapMakinesi = HesapMakinesiniGetir();int toplam = hesapMakinesi.Add(1, 2);
    64. 64. Bildirimsel C# 3.0 DinamikEşzamanlılık C# 4
    65. 65. ... - C# v.Next Asenkron Programlama 2010 - C# 4.0 Dinamik programlama 2007 - C# 3.0 LINQ 2005 - C# 2.0 Generics2002 - C# 1.0 Managed Kod
    66. 66. var veri = VeriyiIndir(...);VeriyiIsle(veri);VeriyiIndirAsync(... , veri => { VeriyiIsle(veri);});
    67. 67. public TResult VeriyiIndir(TParam parametre);…public IAsyncResult BeginVeriyiIndir (TParam parametre, AsyncCallback geriCagri, object durum);public TResult EndVeriyiIndir (IAsyncResult asenkronSonuc);
    68. 68. public TResult VeriyiIndir(TParam parametre);…public void VeriyiIndirAsync(TParam parametre);public event VeriIndirTamamlandiEventHandlerVeriIndirTamamlandi;public delegate void VeriIndirTamamlandiEventHandler( object sender, VeriIndirTamamlandiEventArgs eventArgs);public class VeriIndirTamamlandiEventArgs :AsyncCompletedEventArgs{ public TResult Sonuc { get; }}
    69. 69. private void adresleriBul_Click(object sender, EventArgs e) { <adresleriBul_Click>d__0 d__ = new <adresleriBul_Click>d__0(0); d__.<>4__this = this; d__.sender = sender; d__.e = e; d__.MoveNextDelegate = new Action(d__.MoveNext); d__.$builder = VoidAsyncMethodBuilder.Create(); d__.MoveNext();}
    70. 70. [CompilerGenerated]private sealed class <adresleriBul_Click>d__0 { private bool $__disposing; private bool $__doFinallyBodies; public VoidAsyncMethodBuilder $builder; private int <>1__state; public EventArgs <>3__e; public object <>3__sender; public AnaEkran <>4__this; private string <1>t__$await5; private TaskAwaiter<string> <a1>t__$await6; public string <adress>5__1; public Match <eslesim>5__4; public MatchCollection <eslesimler>5__3; public string <icerik>5__2; public EventArgs e; public Action MoveNextDelegate; public object sender; [DebuggerHidden] public <adresleriBul_Click>d__0(int <>1__state) { this.<>1__state = <>1__state; } [DebuggerHidden] public void Dispose() { this.$__disposing = true; this.MoveNext(); this.<>1__state = -1; } public void MoveNext() { try { this.$__doFinallyBodies = true; if (this.<>1__state != 1) { if (this.<>1__state == -1) { return; } this.<adress>5__1 = "http://www.enterprisecoding.com/blog/"; this.<a1>t__$await6 = new WebClient().DownloadStringTaskAsync(this.<adress>5__1).GetAwaiter<string>(); this.<>1__state = 1; this.$__doFinallyBodies = false; if (this.<a1>t__$await6.BeginAwait(this.MoveNextDelegate)) { return; } this.$__doFinallyBodies = true; } this.<>1__state = 0; this.<1>t__$await5 = this.<a1>t__$await6.EndAwait(); this.<icerik>5__2 = this.<1>t__$await5; this.<eslesimler>5__3 = Regex.Matches(this.<icerik>5__2, @"(?<Protocol>w+)://(?<Domain>[w@][w.:@]+)/?[w.?=%&=-@/$,]*", RegexOptions.IgnoreCase); IEnumerator CS$5$0002 = this.<eslesimler>5__3.GetEnumerator(); try { while (CS$5$0002.MoveNext()) { this.<eslesim>5__4 = (Match) CS$5$0002.Current; this.<>4__this.adresListesi.Items.Add(this.<eslesim>5__4.Value); } } finally { if (this.$__doFinallyBodies) { IDisposable CS$0$0003 = CS$5$0002 as IDisposable; if (CS$0$0003 != null) { CS$0$0003.Dispose(); } } } this.<>1__state = -1; this.$builder.SetCompleted(); } catch (Exception) { this.<>1__state = -1; this.$builder.SetCompleted(); throw; } }}
    71. 71. async void DoWorkAsync() { var t1 = ProcessFeedAsync("www.acme.com/rss"); var t2 = ProcessFeedAsync("www.xyznews.com/rss"); await Task.WhenAll(t1, t2); DisplayMessage("Done");} async Task ProcessFeedAsync(string url) { var text = await DownloadFeedAsync(url); var doc = ParseFeedIntoDoc(text); await SaveDocAsync(doc); ProcessLog.WriteEntry(url); }
    72. 72. async void DoWorkAsync() { var t1 = ProcessFeedAsync("www.acme.com/rss"); var t2 = ProcessFeedAsync("www.xyznews.com/rss"); await Task.WhenAll(t1, t2); DisplayMessage("Done");} async Task ProcessFeedAsync(string url) { var text = await DownloadFeedAsync(url); var doc = ParseFeedIntoDoc(text); await SaveDocAsync(doc); ProcessLog.WriteEntry(url); }
    73. 73. async void DoWorkAsync() { var t1 = ProcessFeedAsync("www.acme.com/rss"); var t2 = ProcessFeedAsync("www.xyznews.com/rss"); await Task.WhenAll(t1, t2); DisplayMessage("Done");} async Task ProcessFeedAsync(string url) { var text = await DownloadFeedAsync(url); var doc = ParseFeedIntoDoc(text); await SaveDocAsync(doc); ProcessLog.WriteEntry(url); }
    74. 74. async void DoWorkAsync() { var t1 = ProcessFeedAsync("www.acme.com/rss"); var t2 = ProcessFeedAsync("www.xyznews.com/rss"); await Task.WhenAll(t1, t2); DisplayMessage("Done");} async Task ProcessFeedAsync(string url) { var text = await DownloadFeedAsync(url); var doc = ParseFeedIntoDoc(text); await SaveDocAsync(doc); ProcessLog.WriteEntry(url); }
    75. 75. async void DoWorkAsync() { var t1 = ProcessFeedAsync("www.acme.com/rss"); var t2 = ProcessFeedAsync("www.xyznews.com/rss"); await Task.WhenAll(t1, t2); DisplayMessage("Done");} async Task ProcessFeedAsync(string url) { var text = await DownloadFeedAsync(url); var doc = ParseFeedIntoDoc(text); await SaveDocAsync(doc); ProcessLog.WriteEntry(url); }
    76. 76. async void DoWorkAsync() { var t1 = ProcessFeedAsync("www.acme.com/rss"); var t2 = ProcessFeedAsync("www.xyznews.com/rss"); await Task.WhenAll(t1, t2); DisplayMessage("Done");} async Task ProcessFeedAsync(string url) { var text = await DownloadFeedAsync(url); var doc = ParseFeedIntoDoc(text); await SaveDocAsync(doc); ProcessLog.WriteEntry(url); }
    77. 77. async void DoWorkAsync() { var t1 = ProcessFeedAsync("www.acme.com/rss"); var t2 = ProcessFeedAsync("www.xyznews.com/rss"); await Task.WhenAll(t1, t2); DisplayMessage("Done");} async Task ProcessFeedAsync(string url) { var text = await DownloadFeedAsync(url); var doc = ParseFeedIntoDoc(text); await SaveDocAsync(doc); ProcessLog.WriteEntry(url); }
    78. 78. async void DoWorkAsync() { var t1 = ProcessFeedAsync("www.acme.com/rss"); var t2 = ProcessFeedAsync("www.xyznews.com/rss"); await Task.WhenAll(t1, t2); DisplayMessage("Done");} async Task ProcessFeedAsync(string url) { var text = await DownloadFeedAsync(url); var doc = ParseFeedIntoDoc(text); await SaveDocAsync(doc); ProcessLog.WriteEntry(url); } 
    79. 79. async void DoWorkAsync() { var t1 = ProcessFeedAsync("www.acme.com/rss"); var t2 = ProcessFeedAsync("www.xyznews.com/rss"); await Task.WhenAll(t1, t2); DisplayMessage("Done");} async Task ProcessFeedAsync(string url) { var text = await DownloadFeedAsync(url); var doc = ParseFeedIntoDoc(text); await SaveDocAsync(doc); ProcessLog.WriteEntry(url); } 
    80. 80. async void DoWorkAsync() { var t1 = ProcessFeedAsync("www.acme.com/rss"); var t2 = ProcessFeedAsync("www.xyznews.com/rss"); await Task.WhenAll(t1, t2); DisplayMessage("Done");} async Task ProcessFeedAsync(string url) { var text = await DownloadFeedAsync(url); var doc = ParseFeedIntoDoc(text); await SaveDocAsync(doc); ProcessLog.WriteEntry(url); }  
    81. 81. async void DoWorkAsync() { var t1 = ProcessFeedAsync("www.acme.com/rss"); var t2 = ProcessFeedAsync("www.xyznews.com/rss"); await Task.WhenAll(t1, t2); DisplayMessage("Done");} async Task ProcessFeedAsync(string url) { var text = await DownloadFeedAsync(url); var doc = ParseFeedIntoDoc(text); await SaveDocAsync(doc); ProcessLog.WriteEntry(url); }  
    82. 82. async void DoWorkAsync() { var t1 = ProcessFeedAsync("www.acme.com/rss"); var t2 = ProcessFeedAsync("www.xyznews.com/rss"); await Task.WhenAll(t1, t2); DisplayMessage("Done");} async Task ProcessFeedAsync(string url) { var text = await DownloadFeedAsync(url); var doc = ParseFeedIntoDoc(text); await SaveDocAsync(doc); ProcessLog.WriteEntry(url); }   
    83. 83. async void DoWorkAsync() { var t1 = ProcessFeedAsync("www.acme.com/rss"); var t2 = ProcessFeedAsync("www.xyznews.com/rss"); await Task.WhenAll(t1, t2); DisplayMessage("Done");} async Task ProcessFeedAsync(string url) { var text = await DownloadFeedAsync(url); var doc = ParseFeedIntoDoc(text); await SaveDocAsync(doc); ProcessLog.WriteEntry(url); }     
    84. 84. async void DoWorkAsync() { var t1 = ProcessFeedAsync("www.acme.com/rss"); var t2 = ProcessFeedAsync("www.xyznews.com/rss"); await Task.WhenAll(t1, t2); DisplayMessage("Done");} async Task ProcessFeedAsync(string url) { var text = await DownloadFeedAsync(url); var doc = ParseFeedIntoDoc(text); await SaveDocAsync(doc); ProcessLog.WriteEntry(url); }      
    85. 85. async void DoWorkAsync() { var t1 = ProcessFeedAsync("www.acme.com/rss"); var t2 = ProcessFeedAsync("www.xyznews.com/rss"); await Task.WhenAll(t1, t2); DisplayMessage("Done");} async Task ProcessFeedAsync(string url) { var text = await DownloadFeedAsync(url); var doc = ParseFeedIntoDoc(text); await SaveDocAsync(doc); ProcessLog.WriteEntry(url); }       
    86. 86. async void DoWorkAsync() { var t1 = ProcessFeedAsync("www.acme.com/rss"); var t2 = ProcessFeedAsync("www.xyznews.com/rss"); await Task.WhenAll(t1, t2); DisplayMessage("Done");} async Task ProcessFeedAsync(string url) { var text = await DownloadFeedAsync(url); var doc = ParseFeedIntoDoc(text); await SaveDocAsync(doc); ProcessLog.WriteEntry(url); }       
    87. 87. private void adresleriBul_Click(object sender, EventArgs e) { var adress = "http://www.enterprisecoding.com/blog/"; var icerik = new WebClient().DownloadString(adress); var eslesimler = Regex.Matches(icerik,@"(?<Protocol>w+)://(?<Domain>[w@][w.:@]+)/?[w.?=%&=-@/$,]*", RegexOptions.IgnoreCase); foreach (Match eslesim in eslesimler) { adresListesi.Items.Add(eslesim.Value); }}
    88. 88. delegate void EslesimleriEkleCallback(MatchCollection eslesimler);private void adresleriBul_Click(object sender, EventArgs e) { var islem = new Thread(new ThreadStart(AdressleriBul)); islem.Start();}private void AdressleriBul() { var adress = "http://www.enterprisecoding.com/blog/"; var icerik = new WebClient().DownloadString(adress); var eslesimler = Regex.Matches(icerik, @"(?<Protocol>w+)://(?<Domain>[w@][w.:@]+)/?[w.?=%&=-@/$,]*", RegexOptions.IgnoreCase); if (adresListesi.InvokeRequired) {//Fonksiyon ayrı thread’den çağırılmış var callback = new EslesimleriEkleCallback(EslesimleriEkle); Invoke(callback, new[] { eslesimler }); } else { //Aynı thread, doğrudan çağırılabilir EslesimleriEkle(eslesimler); }}private void EslesimleriEkle(MatchCollection eslesimler) { foreach (Match eslesim in eslesimler) { adresListesi.Items.Add(eslesim.Value); }}
    89. 89. private async void adresleriBul_Click(object sender, EventArgs e) { var adress = "http://www.enterprisecoding.com/blog/"; var icerik = await new WebClient().DownloadStringTaskAsync(adress); var eslesimler = Regex.Matches(icerik,@"(?<Protocol>w+)://(?<Domain>[w@][w.:@]+)/?[w.?=%&=-@/$,]*",RegexOptions.IgnoreCase); foreach (Match eslesim in eslesimler) { adresListesi.Items.Add(eslesim.Value); }}
    90. 90. ... - C# v.Next Next CaaS ... - C# v.Next Asenkron Programlama 2010 - C# 4.0 Dinamik programlama 2007 - C# 3.0 LINQ 2005 - C# 2.0 Generics2002 - C# 1.0 Managed Kod
    91. 91. SınıfMeta-programlama Oku-Çalıştır-Yaz public Foo Döngüsü Dil Nesne Modeli alan private X string .NET Kaynak Kodu Source code Assembly Source code Source code Compiler Derleyici Source code
    92. 92. 3D Derinlik Algılayıcıları RGB KameraÇoklu Mikrofon Dizisi Hareket Motoru
    93. 93. ShoulderRight ShoulderLeft ElbowRight Head ElbowLeft WristRight WristLeftHandRight HandLeft ShoulderCenter Spine HipCenter HipRight HipLeft KneeRight KneeLeft AnkleRight AnkleLeft FootLeft FootLeft
    94. 94. http://www.enterprisecoding.com

    ×