Yazılım Geliştirme,Eğitim ve Paylaşım
 
 
Makaleler
 
Videolar
 
 
 
Diğer
 
 
 
İneta Üyesidir
 
 
 
 Başlık :C# 3.0 ve Yenilikler
 Yazar : Tahir MUTLU
 Tarih : 2008-03-01
 Kategori : C#
       Okunma : 697
  
 
 

C# 3.0

                C# 2.0 ile gelen yeniliklere ayak uydurma sürecini atlatmışken bir baktık ki C# 3.0 geldi. Aslında bir bakıma iyi de oldu. Neden iyi oldu diyecek olursak eğer bir yenilik çıkmışsa ve bu yenilik gerçekten işimizi kolaylaştıracaksa sa, gözümüz kapalı hemen başlarız öğrenmeye ama eskisi  daha iyiyse hiç oralı olmayız. Bizde 3.0 ile gelen yenilikler bizi hadi bunu da öğrenelim dedirtecek türden.

                Sözü fazla gevelemeden örnek kullanımlar ile isterseniz işin içerisine biraz biraz göz atalım. İlk olarak değişkenlerden bahsedelim. Artık değişkenlerinizin tiplerinizi belirtmenize gerek yok. Tanımladığınız değişkene atanan ilk değer sayesinde tipini belirleyebiliyorsunuz. Örneğin

var deneme = 12;

var isim = "tahir";

MessageBox.Show(isim+" "+deneme+" yaşında");

 

                Örneğimizde de görüldüğü gibi deneme ve isim adında iki değişken tanımladık var ön takısı ile onlara atadığımız değerler sayesinde tipleri belirlenmiş oldu. Tabi birde bu örneğe bakarak var ile object birbirine karıştırılmamalıdır. Çünkü object bir referasn türdür ve belirli bir yer kaplar,kendisine atanan değerler boxin ve unboxin işlemlerine tabi tutulduğu için belirli bir performans kaybına ssebebiyet verebilir. var ise sadece bir bildirim biçimidir. İlk uygulamalarımızda yaptığım bir kaç yanlışlıktan bahsedecek olursak

var deneme=7;

deneme="tahir";  // dereleyici denemeyi int olarak derledi bu bir problemteşkil eder.

var deneme1;       // ilk değer ataması yapılmalıdır derleyici ona göre bir ata yapmalıdır.

 

                Bilinmiş int,string lerin yanısıra structlara benzer tanimlamalarda yapabiliyoruz.Bunlar de aynı şekilde var belirteci kullanılarak yapılabiliyor.

var ali = new { Ad = "ali", Yas = 20 };

var huseyin = new { Ad="hüseyin",Yas=25};

ali = huseyin;

var mehmet = new {ali.Ad,ali.Yas };

MessageBox.Show(mehmet.Ad + " " + mehmet.Yas + " yaşında");

 

Örneğimizde gördüğümüz şekli ile ali diye bir isimsiz veri tipi oluşturduk ve basit bir şekilde değer aktarması yaptık.

Birçoğumuz veriler ile işlem yaparken STL in bize sunmuş olduklarından c++ la birlikte kullanrak yararlanmışızdır. Bunlardan işimize ençok yarayanlardan biriside listelerdi. C# 1.1 ve 2.0 da da karşımıza geliyordu fakat 3.0 la birlikte LAMBADA İFADELERİ ile karşılaşıyoruz. Bu ifadeler aslında lisp,pyhton gibi bir çok dilde aslında var olan bir kavram ve ifade. Güçlü bir yapıya sahip olduğu için en karmaşık algoritmaları bile basit bir şekilde ifade etmemize olanak sağlıyor hiç şüphesiz. Şimdi bunu bir örnek yardımı ile görelim.

Elimizde birtakım sayılar olsun ve biz bunların çift olanları ile ilgilenelim.

var sayilar = new List<int>() { 1, 2, 3, 4, 5, 6 }; //koleksiyon ilk atama , C# 3.0’a özgüdür.

var ciftSayilar = sayilar.FindAll(val => val % 2 == 0);

var goster = "";

foreach (int i in ciftSayilar)

{

     goster += i+" ";

 }

 MessageBox.Show(goster);

 

Örnekte gördüğümüz => ifadesi bir operatör olarak ele alınmalıdır, ve bool türü döndüren bir fonksiyon tanımlamış oluyorz. Tabi lambada ifadeleri sadece örneğimizdeki kullanım ile kısıtlı değil sadece genel bir taslak oluşması adına bahmetmek istediğim bir bölümdü.

Son olarakta genel olarak toparlama adına ve birazda vay be dememizi sağlacayacak bir örnek yapalım.(En azından ben ilk karşılaştığımda demiştim). Tabiki bu son örneğimizde birazda LINQ ya giriş yapmış olacağız.

Bir listemiz olsun burada kişilerin isimleri ve no adında bir değişkenleri olsun ve biz bunlardan belirli bir no değerin üstünde olanların isimlerini sonuç olarak ekrana basalım. Bakın burda herhangi bir veritabanı yok . Tabi buradaki ifademizi LINQ yarıdımı ile yapıyor olacağız. Nasıl veritabanu uygulamalarında SQL dilini kullanarak ifadelerimiz belirliyorsak burda da LINQ dan yararlanacağız.

List<Kisiler> kisiler = new List<Kisiler>();

            kisiler.Add(new Kisiler { Ad = "Tahir", No = 3 });

            kisiler.Add(new Kisiler { Ad = "Ömer", No = 6 });

            kisiler.Add(new Kisiler { Ad = "Mehmet", No = 2 });

            kisiler.Add(new Kisiler { Ad = "Gökmen", No = 16 });

            kisiler.Add(new Kisiler { Ad = "Civcivler", No = 10 });

 

            //var sonuclar = .. şeklinde de diyebilirdik.

            IEnumerable<string> sonuclar = from val in kisiler

                                           where val.No > 5

                                           orderby val.Ad

                                           select val.Ad.ToUpper();

            var isimler = "";

            foreach (string ad in sonuclar)

            {

                isimler += ad + " ";

            }

            MessageBox.Show(isimler);

......

public class Personel

    {

        public string Ad;

        public int No;

    }

 

Sorgulama bölümüne baktığımızda aslında SQL e yakın bir ifade var ama sanki sondan başlıyor gibi. Bildiğimiz üzere select bölümü en başta yer alır ama burada ensonda yer alıyor. Uygulamayı çalıştırdığımızda karşımıza

CİVCİVLER GÖKMEN ÖMER

Şeklinde bir ifade görmeliyiz.

Genel olarak sizlere C# 3.0 la gelenlerden bahetmeye çalıştım ve örneklendirmeye garet gösterdim. Soru ver görüşlerinizi bildirebilirsiniz.