Bu site emekli olmuştur. Arşiv amaçlı olarak BT AKADEMİ sponsorluğunda yayın hayatına devam etmektedir.




C#nedir?com
 
YAZAR HAKKINDA
Sefer Algan
Sefer Algan
http://www.seferalgan.com
İletişme geçmek için tıklayın.
71 Makalesi yayınlanmakta.
Yazar hakkında detaylı bilgi için tıklayın.
Yayınlanan diğer makaleleri için tıklayın.
İlgili etiketler:  C# / VC#/.NET Sefer Algan
 
YAZI HAKKINDA
Türü : Makale
Serbest Köşede C#nedir?com üyelerinin hazırladıkları yazılar yayınlanır. Bu yazılar editör incelemesine girmeden yayınlanır.
Seviyesi : Başlangıç
Kategori : C# / VC#/.NET
Yayınlanma Tarihi : 16.5.2003
Okunma Sayısı : 16502
Yorum Sayısı : 0     yorum yaz
Site İçi AramaSİTE İÇİ ARAMA
Üye Girişini AçÜye GİRİŞİ
Üye girişi için tıklayın.
Kullanıcı Adı
Şifre
 
Beni her zaman hatırla
Bir hafta boyunca kullanıcı bilgilerinizi kullanıcı çıkışı yapana kadar hatırlar. (Paylaşılan bilgisayarlarda önerilmez.)
 
Şifremi / Kullanıcı Adımı unuttum.
 
.net TV RSS Serbest KÖŞE (?)
Serbest Köşede C#nedir?com üyelerinin hazırladıkları yazılar yayınlanır. Bu yazılar editör incelemesine girmeden yayınlanır.
emre TAŞ
Silindi
emre TAŞ
yazının devamı >
emre TAŞ
silindi
emre TAŞ
yazının devamı >
emre TAŞ
silindi
emre TAŞ
yazının devamı >
emre TAŞ
silindi
emre TAŞ
yazının devamı >
emre TAŞ
silindi
emre TAŞ
yazının devamı >
Makale Gönder Bende Yazmak İstiyorum
.net TV RSSBlogroll
Turhal Temizer
Conda install environment.yml Package 10.8.2022
Turhal Temizer
Mac OS/X Removing CUDA 10.8.2022
  Diğer Herşey
Sponsorlar
BT Akademi
Medya Portakal
Video Hosting Sponsoru
Csharpnedir.com bir Ineta üyesidir
Uzman Abi
Her Yönüyle C# - Sefer Algan
Visual C#.NET 2003'teki Yenilikler
 
Kapat
Sayfayı Yazdır Sık Kullanılanlara Ekle Arkadaşıma Gönder MySpace Del.Ico.Us Digg Facebook Google Mixx Reddit StumbleUpon
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.

/**
Yorum
                satiri
*/
///
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
  • Yazılan Yorumlar
  • Yorum Yaz
Bu konu hakkında yayınlanan yorum bulunmamaktadır.
"Yorum Yaz" tabını kullanarak sizde yorumlarınızı yazabilirsiniz.
Yorum yazabilmek için üye girişi yapmalısınız. Üye girişi için tıklayın.
Üye değilseniz Üyel Ol linkine tıklayarak üyeliğinizi hemen başlatabilirisniz.
 
  • Bu Konuda Son 10
  • 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