|
Visual C#.NET 2003'teki Yenilikler |
|
Gönderiliyor lütfen bekleyin... |
|
|
Bu yazıda Visual
StudioNET 2003 ile birlilkte gelen Visual C# dilinde yapılan önemli değişikliklere
ve Visual Stdio.NET geliştirme ortamının(IDE) yeni özelliklerine değinilecektir.
Bu yeni özellikler ve değişiklikler 3 ana başlık altında incelenecektir : Derleyici
ve dildeki değişiklikler, proje geliştirme ile ilgili değişiklikler ve VS.NET
2003 IDE'sindeki değişikler.
Giriş
Bildiğiniz gibi
2001 yılından beri C# dili ECMA(European Computer Manufacturer's Assocation)
tarafından standart hale getirilmiştir. Bu herhangi bir kurum veya kuruluşun
istediği takdirde ECMA-334 standartlarına uymak koşulu ile kendi C# derleyicisini
üretebileceği anlamına gelmektedir. Nitekim ECMA-334 standartları çerçevesi
içerisinde şu anda farklı platformlar için geliştirilmiş C# derleyicileri bulunmaktadır.
Bu derleyiciler içerisinde en çok bilinen ve kullanılanı Microsoft'un Visual
C# derleyicisidir. Microsoft, ECMA standartlarına bağlı kalmak koşulu ile kendi
derleyicisini istediği şekilde biçimlendirebilmektedir. Bu yazıda Visual C#
derleyicisine ve dilin yapısına 2003 versiyonu ile birlikte gelen yenilikleri
inceleyeceğiz. Ayrıca Microsoft'un Visual Studio.NET yazılım geliştirme platformu
IDE'sine yeni eklediği bir takım özellikleri inceleyeceğiz.
Visual C# Dili ve Derleyicisindeki Değişiklikler
Visual C# 2003
versiyonunda iki ana değişiklik yapılmıştır. Bu değşiklikler eski kodların çalışmamasına
sağlayacak nitelikte değildir. Bu değişikliklerin ilki #line önişlemci komutudur.
#line önişlemci komutu eski versiyonda zaten bulunmaktaydı, yeni versiyonda
#line önişlemci komutuna yeni bir anlam daha yüklenmiştir. Yeni kullanımda,
iki #line komutu arasında kalan kod satırı Debugger programı için bilgi sağlamaz.
Yani Debugger için bu kodlar önemsizdir. Program debugger ile çalıştığında ilgili
kod satırlara dikkate alınmaz. Dikkat etmemiz gereken nokta derleme işleminin
normal biçimde yapılmasıdır. Zira #line önişlemci komutuna yüklenen bu anlam
sadece Debugger(hata ayıklayıcı) programını ilgilendirmektedir. #line önişlemci
komutunun bu anlamda kullanılması için "hidden" parametresinin
kullanılması gerekmektedir. Aşağıda #line önişlemci komutunun kullanılması ve
sonuçlarının görülmesi adım adım anlatılmaktadır.
using
System;
class
MyClass
{
public static void Main()
{
Console.WriteLine("www");
// Buraya "Breakpoint" koyun.
#line hidden
Console.WriteLine("csharpnedir");
#line default
Console.WriteLine("com");
}
}
|
Kırmız yazılı satıra
bir breakpoint ekledikten sonra Debugger ile birlikte programı derleyin. Bunun
için yapmanız gereken F5 tuşuna basmak yada Debug menüsünden Start sekmesini
seçmektir. Program çalıştığında programdaki her 3 satırın da ekrana yazdırıldığını
göreceksiniz, ancak kontrol Debugger programına geçtiğinde Debug menüsündeki
StepOver(F10) komutu ile program içinde satır satır ilerlerken Degugger programının
ikinci satırla ilgilenmediğini göreceksiniz.
Diğer bir değişiklik
ise XML yorum satırları ile ilgilidir. Bildiğiniz gibi C# kodu içerisinde XML
formatında yorum satırları eklenebilmektedir. Bu yorum satırları metotlar, sınıflar
ve diğer tipler hakkında dökümantasyon sağlamk için yazılmaktadır. Derleme işleminde
istenirse bu yorum satırlar C# derleyicisi tarafından ayıklanarak rapor halinde
sunulabilir. Eski versiyonda XML yorum satırları 3 tane ters bölü karekterinden
sonra yazılırdı. Örneğin sıklıkla gördüğümüz "summary" elementi aşağıdaki
gibi yazılabilir
///
///
///
Yeni versiyonda XML yorum satırları /** ve */ karekterleri arasında da yazılabilir
hale getirilmiştir. Bu yeni kurala göre aşağıdaki yazım biçimleri ile XML yorum
satırları oluşturulabilir.
/**
yorum
*/
/** yorum */
/**
*
* yorum*/
Yukarıdaki her üç kullanımda eşdeğerdir. |
Bunların dışında
bir önceki versiyonla yeni versiyondaki kullanımları birleştirip aynı kaynak
kod içinde aşağıdaki gibi de kullanabiliriz.
Yapısal
Değişiklikler
Visual C# 2003
derleyicisinin ürettiği bazı kodlarda ve içsel mekanizmalarda da değişiklik
olmuştur. Bu değişikliklerden en önemlileri özellik(property) bildiriminde ve
foreach döngü yapısının çalışma mantığında görülmektedir.
Sınıfların bir
üye elemanı olan özellik bildirimi set ve get anahtar sözcükleri ile yapılır.
Bu yüzden bu özelliklere genellikle "setter" ve "getter"
da denilmektedir. Özellik bildirimi C# derleyicisi tarafından özel metotlara
çevrilir. Bu metotlar sırasıyla get_OzellikIsmi() ve set_OzellikIsmi() metotlarıdır.
Dolayısıyla bir nesne üzerinden herhangi bir özelliği çağırdığımızda aslında
bir metot çalıştırmış oluyoruz. Zaten C++ dilinde bu tür işlemleri yapmak için
Get ve Set ile başlayan çeşitli metotlar tanımlanırdı. C# bu işlemleri biraz
daha soyutlaştırarak kullanıcının daha rahat çalışmasını sağlamıştır.
Visual C# 2002'de önemli bir bug vardı. Bu bug özellik bildirimlerinin get ve
set bloklarının varlığından kaynaklanmaktaydı. Örneğin aşağıdaki kodda gördüğünüz
sınıf bildirimi herhangi bir hata vermiyordu.
class
Deneme
{
public int a
{
get
{
return 5;
}
set
{
value = 5;
}
}
public
int get_a()
{
return 3;
}
public
int set_a()
{
return 3;
}
}
|
Bu sınıf bildirimini
içeren bir kaynak kodu delendiğinde
Deneme d = new Deneme();
d.a = 5;
satırlarındaki d.a; ile a özelliğinin set bloğunun mu çalıştırılacağı
yoksa set_a() metodunun mu çalıştırılacağı belli değildir. Bu tür bir bildirimin
derleme hatasına yol açması gerekir. Çünkü a özelliğinin bildirimindeki set
ve get blokları sayesinde zaten get_a() ve set_a() metot bildirimleri yapılmıştır.
Visual C# 2003 derleyicisi ile bu sınıf bildirimini içeren bir kaynak kod derlenemeyecektir.
Not: Arayüzlerde
bildirimi yapılmış özellikler için derleme zamanında get_Ozellik() ve set_Ozellik()
gibi iki metot tanımı yapılmaz. Bu yüzden aşağıdaki kodda IArayüz arayüzünden
türemiş olan sınıf içinde a özelliğinin get ve set blokları tanımlanırken set_a()
ve get_a() metotları kullanılamaz.
interface
Deneme
: IArayuz
{
public int
a
{
get;
set;
}
}
class
Deneme : IArayuz
{
//Geçerli Özellik Bildirimi
public int a
{
get
{
return 5;
}
set
{
value = 5;
}
}
//Geçersiz Bildirim
public int IArayuz.get_a()
{
}
//Geçersiz Bildirim
public int IArayuz.set_a(int
deger)
{
}
}
|
Derleyicinin yapısındaki
diğer bir değişiklik foreach döngüsünün işletilmesi sırasında görülmektedir.
Bildiğiniz gibi foreach ile iteratif bir şekilde türlere ait dizilerin elemanlarına
erişmemiz mümkün, ancak bütün türler için foreach döngüsünü kullanamayız. Bunun
için foreach ile kullanılacak türlerin bazı metotları ve özellikleri sağlaması
gerekir. Bu metotlar ve özellikler IEnumerator arayüzü içinde bildirilmiştir.
foreach döngüsünün bitiminde C# derleyicisi döngüde kullanılan türün IDisposable
arayüzünü uygulayıp uygulamadığını kontrol etmiyordu. foreach ile kullanılan
tür IEnumerator arayüzünü uygulasın yada uygulamasın Visual C# 2003 derleyicisi
IDisposable arayüzünün uygulanmış olup olmadığını kontrol eder ve bu sayede
IDisposable arayündeki Dispose() metodu çağrılır.
Göze çarpan diğer bir değişiklik ise niteliklerin kullanımında görülmektedir.
private elemanı olan nitelikler eski versiyonda kullanılabiliyordu ancak yeni
derleyicide sadece public nitelik elemanları kullanılabilmektedir. Örneğin Deneme
isimli nitelik sınıfı ve bu sınıfın private üye elemanı olan Ozellik bildirilmiş
olsun. Buna göre aşağıdaki metot bildirimi yeni derleyici için geçersizdir.
[Deneme(Ozellik
= "deneme özellik")]
public
int Metot()
{
} |
Not: Yukarıdaki
bildirim Visual C# 2002 derleyicisi için geçerlidir.
Diğer bir değişiklik enum sabitlerinin artık char türüne dönüştürülebilmesidir.
Örneğin aşağıdaki programı derleyip çalıştırdığınızda ekrana 'L' karekteri yazdırılacaktır.
(L karekterinin unicode karşılığı 76'dır)
using
System;
enum
Harfler
{
A,B = 76,C
}
class
Class1
{
static
void Main()
{
char
c = (char)Sefer.B;
Console.WriteLine(c);
}
}
|
Yukarıda anlatılan
değişikliklerin tamamı uygulama performansını artırmak ve ECMA standartlarına
daha sıkı bağlılık amacıyla yapılmıştır. Bir önceki versiyonda ECMA standartlarına
uymayan kurallar ve bazı bug'lar yeni versiyonda düzeltilmiştir.
Geliştirme Ortamındaki Değişiklikler
1- Geliştirdiğimiz
uygulamaları derlerken çeşitli uyarılar yada hatalar alabiliriz. Bu yazılım
geliştirmenin doğal bir sürecidir. Bazı durumlarda derleyicinin verdiği uyarılar
gerçekten can sıkıcı olabilir. Bazende bu uyarılar programcının olası bir hataya
karşı önlem alması için olabilir. VS.NET 2003 ortamında proje derlenirken bazı
uyarıların verilmemesini sağlayabiliriz. Komut satırı derleyicisinde bu işlem
/nowarn argümanı ile yapılır. Örneğin derleme işlemi sırasında CS0050
ve CS0060 kodlu uyarının verilmemesi için csc derleyicisi aşağıdaki gibi çalıştırılır.
csc dosya.cs /nowarn:50,60
VS.NET kullanarak bu uyarı engelleme işi proje özelliklerinden ayarlanır. Solution
Explorer penceresinde projeye sağ tıklayıp proje özellikleri penceresinden "Configuration
Properties" sekmesini ardından "Build" seçeneğini seçin. Aşağıdaki
ekran görüntüsündeki alana uyarı kodlarını noktalı virgül ile birbirinden ayrılacak
şekilde yazın.
2- Yeni versiyon ile birliktte istersek /nostdlib argümanını kullanarak
mscorlib.dll kütüphanesini programlarımıza eklemeyebiliriz. Bildiğiniz gibi
bütün System isim alanı ve bu isim alanında bildirilmiş türler mscorlib.dll
kütüphanesinde bulunmaktadır. Komut satırından
csc dosya.cs /nostdlib-
şeklindeki bir derleme ile standart kütüphane olan mscorlib.dll uygulamamıza
eklenmez. Bu işlemi kendi System isim alanımızı bildirmek için kullanabiliriz.
/nostdlib+ şeklindeki kullanım varsayılan kullanım ile eşdeğerdir, yani mscorlib.dll
kütüphanesi uygulamaya eklenir.
VS.NET ortamında bu değişikliği yapmak için proje özelliklerinden "Configuration
Properties" sekmesini ardından "Advanced" seçeneğini seçin. Bu
pencereden "Do not use Mscorlib" seçeneğini aşağıdaki gibi true yapın.
3- Proje özellikleri penceresinde "Common Properties" seçeneğindeki
"Build Events" kısmındaki alanları doldurarak projenin oluşturulması
sırasında ve proje oluşturulduktan sonra çalıştırılacak batch komutları yazılabilir.
Önceden tanımlanmış bir kaç makroyu da kullanmak mümkündür. "Post-Build
Event Command Line" seçeneği ile ilgili 3 durum sözkonusudur. Bunlar batch
komutlarının
a) Her zaman çalıştırılması
b) Yalnızca başarılı oluşturmalar sırasında çalıştırılması
c) Oluşturma işlemi çıktı dosyalarını güncellediği zaman çalıştırılmasıdır.
Bu seçenkelerin ayarlandığı pencere aşağıdaki gibidir.
4- Web ve
Windows uygulamaları için birden fazla çalışma zamanı desteği sağlamak mümkündür.
Örneğin .NET Framework 1.0 ve .NET Framework 1.1 çalışma zamanını destekleyecek
ve bu ortamlarda çalışabilecek uygulama geliştirmek mümkündür. Bu ayarı yapmak
için proje özellikleri penceresindeki "Common Properties" sekmesindeki
"General" sayfasından "Supported Runtimes" özelliğini değiştirmek
gerekir. Bu özelliğe tıklanıldığında aşağıdaki pencere ile karşılaşılır.
Bu ayar yapılırken dikkat edilmesi gereken nokta .NET Framework 1.1 'deki bazı
özelliklerin 1.0 versiyonunda bulunmamaısıdır. Bu yüzden 1.1 versiyonunda geliştirilen
projelerin 1.0 versiyonunda çalışabilmesi için ortak özelliklerin bulunması
gerekir.
Yeni
Eklenen "Intellisense" Özellikleri
VS.NET IDE'si geliştirici
için büyük kolaylıklar sağlamaktadır. Bu kolaylıkların en bilineni ve en işe
yarayanı IDE'nin akıllı olmasıdır. IDE, dilin kurallarına göre legal olan bir
çok olayı bizim için otomatik yapmaktadır. Örneğin bir nesnenin metotlarını
ve özelliklerini '.' operatöründen sonra görebilmemiz gibi. VS.NET 2003 IDE
sine hoşunuza gidecek yeni akıllı özellikler eklenmiştir. Bu kısımda bu yeni
özellikleri göreceğiz.
1- Göze çarpan ilk değişiklik olaylara yeni bir metot ekleme sırasında
görülmektedir. VS.NET tasarım ekranında bir kontrole ait olayı işlemek istediğimizde
Properties ekranında ilgili olayı seçip metot ismini yazıyorduk. Yeni versiyonda
bu işlemler kod editöründen de yapılabilmektedir. Bir olaya += operatörü ile
bir metot eklemek istediğimizde "TAB" tuşuna basarsak olayı yönetecek
temsilci new operatörü ile eklenir. Tekrar "TAB" tuşuna basıldığında
olayı yönetecek temsilcinin temsil edeceği metodun prototipine uygun bir "event
handler" metodunun bildirimi otomatik olarak yapılır.
2- Diğer bir yeni özellik arayüzlerin türetilmesi sırasında görülür.
Bildiğiniz gibi bir sınıf bir arayüzden türetiliyorsa arayüzde bildirilmiş olan
bütün özellik ve metotların türeyen sınıfta tanımlanması yani uygulanması gerekir.
VS.NET IDE si türetilen arayüzdeki eleman bildirimlerini türeyen sınıfta otomatik
olarak gerçekleştirir. Aşağıdaki ekran görüntüsünde bu işlemin nasıl yapıldığı
gösterilmektedir.
Türetilecek arayüz
ismi yazıldıktan sonra TAB tuşuna basılırsa arayüzdeki eleman bildirimleri Deneme
sınıfına otomatik olarak eklenecektir. Bu işlemden sonra Dispose() metodunun
bildirimi Deneme sınıfına otomatik olarak eklenmiş olacaktır.
3- Türetme sırasında yeniden yüklenebilecek(overiride) metotlar override
anahtar sözcüğü yazıldıktan sonra otomatik olarak gösterilir.Örneğin Metot1
ve Metot2 adında 2 tane sanal(virtual) metodu olan TemelSınıf'tan türeyen sınıf
içinde override anahtar sözcüğü kullanıldıktan sonra aşağıdaki ekran görüntüsü
elde edilir.
Yukarıdaki ekranda Object sınıfının metotlarının da gösterildiğine dikkat edin.
Ayrıca TemelSınıf taki sanal olmayan metotların da gösterilmediğine dikkat edin.
4- VS.NET IDE'sinde nesneler ile '.' operatörü kullanıldığı anda nesnenin
türüne ait elemanlar listelenir. Listeleme yapılırken ilk eleman her zaman en
başta olur. Yani sıralama işlemi eleman isimlerinin alfabetik sıraya göre dizilmesiyle
yapılır. Yeni IDE ile birlikte kullandığınız elemanlar "sık kullanılan
elemanlar" bölümüne eklenerek bir sonraki kullanımda en son kullanmış olduğunuz
elemanın seçili olması sağlanır. En çok kullandığımız Console sınıfının WriteLine()
metodunu örnek verelim. Listede Write() metodu WriteLine() metodundan önce gelmektedir.
Dolayısıyla WriteLine() metodunu seçebilmek için "WriteL" yazmak gerekecektir.
Oysa yeni kullanımda WriteLine() metodunu bir kere seçtikten sonra bir sonraki
kullanımda '.' operatörüne basıp "W" yazıldığı anda WriteLine() metodu
seçilecektir.
5- Diğer bir yeni özellik ise Debug işlemi sırasında kullanılan "Immediate
Window" penceresinin kullanımında görülür. Artık "Immediate"
penceresinde de kod editöründe olduğu gibi nesnelerin özelliklerini ve metotlarını
görebilmekteyiz. Object türünden olan s nesnesinin üye metotlarının "Immediate"
penceresinden ne şekilde görüldüğü aşağıdaki ekran görüntüsünde gösterilmiştir.
Not: "Immediate" penceresi ile çalışabilmek için kaynak kodda herhangi
bir satıra "Breakpoint" yerleştirip programı "Debugger"
ile birlikte derlemeniz gerekir.
Sonuç
Visual C# ve VS.NET
IDE'sinde yapılan değişiklikler yukarıda anlatılanlar ile sınırlı değildir.
Ancak göze çarpan yeni özellikler bunlardır diyebiliriz. VS.NET 2003'teki diğer
göze çarpan özellik ise "MMIT" ve "Smart Device" eklentilerinin
varsayılan olarak yüklenmesidir.
Kaynakça:
1 - Visual Studio.NET 2003 Yardım Dosyaları
2 - Online MSDN Magazine
Yazar : Sefer Algan
E-mail : [email protected]
Makale:
Visual C#.NET 2003'teki Yenilikler C#, Visual C# ve .NET Sefer Algan
|
|
|
-
-
Eklenen Son 10
-
Bu Konuda Geçmiş 10
Bu Konuda Yazılmış Yazılmış 10 Makale Yükleniyor
Son Eklenen 10 Makale Yükleniyor
Bu Konuda Yazılmış Geçmiş Makaleler Yükleniyor
|
|