SiteBuilders‘ın teknik mail grubunda aslında sürekli bir yerlerde tartışılan “VB.NET mi, C# mı?” konusu açıldı.
Konuya yolladığım cevabın burada da bulunması hem arşiv hem de gruba üye olmayanların da okuyabilmesi açısından iyi olur diye düşündüm:
VB.NET ‘te “late binding” olayi daha rahat gerceklestirilebilir. C#’ta ise “unassigned variable” hatalariyla bolca karsilasirsiniz. Ancak bu tabi ki handle edilebilir bir durum.
VB.NET 1.0 ve 1.1 operator overloading yani “+,-,/,*” gibi operatorlerin kendi olusturdugunuz class icin nasil bir davranis gosterecegini ayarlayabilmenize malesef olanak vermiyor. C# 1.0 ve 1.1 ise bu konuya destek vermekte. Sanirim VB.NET ‘in C#’a yenildigi en önemli konulardan bir tanesi buydu. Zaten cok büyük VB.NET cözümlerinin icerisinde, bir tane C# projesi var ise, bu mutlaka operator overloading ile ilgilidir.Unutmadan eklemeliyim ki, .NET Framework 2.0 ile birlikte, VB.NET 2.0 operator overloading’e artik destek veriyor.
C#’in en büyük avantajlarindan bir tanesi de kodun icerisine gömülebilen ve daha sonra ilgili araclar kullanilarak dökümantasyonun comment’lara göre direkt olarak olusturulabilmesini saglayan XML Comment yapisi. Bunu VB.NET’te 3rd party araclarla yapmak elbette ki mümkün fakat IDE’nin buna direkt bir destegi yok.
Ozan Bey’in de ekledigi gibi, her 2 dil de MSIL (Microsoft Intermediate Language) koduna cevirilip, öyle derlenir. Cok ufak performans farklari olsa da, bu farklar milisaniyelerle olculur ve her zaman C# daha hizli degildir. VB.NET’in sahip oldugu “WithEvents” keyword’u, VB.NET ile event hook isleminin daha rahat yapilabilmesini saglar. C#’ta bunun icin ekstra bir satir kod eklemek gerek. Ancak bunu bir fark olarak görmeyebilirsiniz de.
C# ile “unsafe” kod üzerinde calisabilirken, VB.NET ile “unsafe” kod islemleri yapamazsiniz. Geriye kalan her türlü konu, .NET Framework’un özelligi. C# ve ya VB.NET bu konuda daha güclü denilebilecek baska bir konu yok. Bu noktada hangi dilin secilecegi, yukarida belirlenen farklar haricinde sadece “syntax” farkindan dolayi farklilik gösterir. Developer hangisine yakinsa ve ya sirket hangisinde standardizasyon saglamak isterse, o dil secilir.
