C# ile Tanışalım
.NET Framework, programcılara aşina olduğu kod dilini kullanma özgürlüğü tanıyarak bir devrim gerçekleştirdi. Ve, belli belirtimlere sadık kalındığı sürece, farklı dillerle yazılmış uygulamaların birbiriyle etkileşebileceğinin de teminatını verdi. Nasıl mesela? Mesela, A programcısı X diliyle bir Class yazıyor; B programcısı, Y diliyle bu Class'ı devralan (inheritance) yeni bir Class yazıyor. Böylece hangi programcının, hangi dili kullandığı sadece ayrıntı olmaktan öte bir anlam taşımıyor.
Evet, .NET diller arası etkileşime olanak tanıyan, bir çok dile destek veren bir platform. Üçüncü parti derleyiciler yazılarak .NET için her an yeni bir dil daha yazılabilir. Ama herşeyden önce, .NET'in beraberinde sunduğu dillere bakmak gerekiyor. Bu diller 4 tane: C++, Visual Basic .NET, C# ve JScript.NET. Dikkat edilirse bu listede, "ben yeniyim" diye göz kırpan bir tanesi var. Yazımızda, bu yeni dili tanımaya çalışacağız.
Önce okumaya çalışalım. Yeni bir dil olduğu ve de bir sembol içerdiği için telaffuzu konusunda baştan anlaşmak gerekir herhalde. C#'ın resmi okunuşu c-sharp (yani si-şarp). Ancak siz, # sembolü için yörenizde kullanılan karşılığa göre özgün telaffuzlar üretebilirsiniz. si-diyez ve biraz daha milli olan ce-diyez de alternatifler arasında.
C# en basit tanımla, C ve C++ ekolünden türemiş, modern, nesne-yönelimli bir programlama dilidir. .NET Framework hedef alınarak tasarlanmıştır ve komut satırı derleyicisi .NET Framework SDK ile bedava dağıtılmaktadır. C#'ı her türlü .NET uygulamasında kullanabilirsiniz. Bir ASP.NET sayfasında, bir Windows Forms uygulamasında, bir web servisinde veya bir konsol uygulamasında... C#, VB.NET ile beraber .NET iskeletinin iki esas dilini teşkil ediyor. Ve aynı zamanda .NET geliştirileri tarafında en çok ilgi çeken ve tercih edilen dil. Özellikle C# - ASP.NET ikilisinin kullanıldığı Open-Source uygulamalar hızla artmaya başladı.
Komut satırı C# Derleyicisi (csc.exe) hakkında
C# derleyicisi (csc.exe), .cs uzantılı dosyalara kaydedilen C# kaynak-kodlarını IL (Ara Dil - Intermediate Language) koduna çevirerek .dll veya .exe uzantılı assemblyler olarak kaydeder. Bu derleyici, .NET Framework'un 21 mb boyutundaki dokumantasyon ve ek araçlar içermeyen dağıtılabilir kurulumunda da mevcuttur ve bedavadır. .NET Framework kurulumu için http://msdn.microsoft.com/net adresine bakınız.
Sisteminizde .NET Framework kurulu ise, C# komut satırı derleyicisi olan csc.exe yi
%WINDOWS_DIZINI% Microsoft.NET Framework vX.X.XXX dizini altında bulabilirsiniz. X karakterleri yerine sistemde kurulu framework sürümü gelecektir. Benim sistemim için bu patika şöyle: D:WINNTMicrosoft.NETFrameworkv1.0.3705
Bu dizin altında C# derleyicisinin yanısıra diğer derleyicileri de bulmanız mümkün (vbc.exe, jsc.exe). Bu dizindeki derleyicileri, komut satırında herhangi bir mantıksal noktadan, sadece dosya ismini yazarak kullanarak büyük bir konfor sağlamak istiyorsanız, bu patikayı, sistemin "search path" listesine eklemelisiniz. Aşağıdaki komut yeterli olacaktır:
Set Path=D:WINNTMICROS~1.NETFRAMEW~1V10~1.370;%PATH%
Böylelikle, her noktadan VB.NET, C# ve JS.NET derleyicilerine ulaşabileceksiniz. Yazımızın ilerleyen bölümlerinde bir derleme örneği vereceğiz. O zaman daha iyi anlaşılacaktır.
C#, tasarlanırken C/C++'ın gücü ve Visual Basic'in kolaylığı ve verimliliği birleştirilmiş. Bu dili tasarlayan ekibin başında ise, yine Turbo Pascal ve Borland Delphi gibi efsanelerin yaratımını yönetmiş Anders Hejlsberg var. Kendisi ile C# hususunda yapılmış bir mülakatı okuyabilirsiniz.
C# kaynak-kod dosyalarını .cs uzantılı dosyalarda saklıyoruz. Bir .cs dosyası oluşturmanız için gereken minimum araç sadece bir metin editörü: Not defteri, EditPlus, UltraEdit, vs. Şu gerçeği unutmayalım: tüm .NET uygulamalarını sadece basit metin editörü kullanarak oluşturmak mümkün. Kendinize güveniyorsanız, Visual Studio .NET gibi tasarım harikası bir dosta hiç ihtiyacınız yok.
C#'ın nesne yönelimli bir dil olduğunu söylemiştik. Bu nedenle, her C# kodunda bir class tanımı görmeniz doğaldır. Aşağıda, derlendiğinde kendi başına (stand-alone) bir konsol uygulaması olarak çalışabilecek bir C# kodu var. Kodumuz bir class bünyesinde statik Main() fonksiyonu içeriyor. Fonksiyon içerisinde, konsola yazı gönderilmektedir.
| merhaba.cs | |
class IlkProgramIlkHeyecan { public static void Main() { System.Console.Write("Merhaba C#"); } } | |
Bu kodu, merhaba.cs uzantılı bir dosya olarak herhangi bir dizine kaydedin. Eğer, yukarıdaki ara-açıklamada bahsettiğim, derleyici için path ayarlarını yaptıysanız, komut satırında merhaba.cs nin bulunduğu dizine geçip aşağıdaki komutu verirseniz, merhaba.cs'yi başarıyla derleyebileceksiniz.
| Komut satırından derleme komutu | |
csc /out:merhaba.exe merhaba.cs | |
| Derleyicinin Cevabı | |
Microsoft (R) Visual C# .NET Compiler version 7.00.9466 for Microsoft (R) .NET Framework version 1.0.3705 Copyright (C) Microsoft Corporation 2001. All rights reserved. | |
Bu komut, aynı dizinde merhaba.exe dosyasını üretecektir. Şimdi yine komut satırından aynı dizinde merhaba yazarak bu programı çalıştıralım:

Bu program kodunu aşağıdaki şekilde de yazmak mümkündü:
using System; class IlkProgramIlkHeyecan { public static void Main() { Console.Write("Merhaba C#"); } } |
Görüldüğü gibi, C# söz dizimi olarak çok da yeni bir şey getirmiyor. Daha önce C, C++, Java, JavaScript veya PHP gibi dillerle ilgilenmiş olanlar, C# sözdizimine kolaylıkla adapte olacaklar. Bunlar arasında C#'ı, özellikle Java geliştiricileri kendilerine çok yakın bulacaklar. Bu benzerliğin tesadüf olmadığı bir gerçek.
C# dilinin yapısıyla ilgili ayrıntılara sonraki yazılarımızda değineceğiz. Şimdi bir de C#'ı ASP.NET uygulamalası içinde görelim.
| csharp.aspx | |
<%@ Page Language="C#" %> <Script Runat="server"> void Page_Load ( Object sender, EventArgs e ) { int i=0; Kisiler[] arKisiler = new Kisiler[3]; for ( ; i<3 ; i++) { arKisiler[i] = new Kisiler(); arKisiler[i].isim = "Kisi_" + (i+1); arKisiler[i].mail = "Mail_" + (i+1); } rpt.DataSource = arKisiler; rpt.DataBind(); } public class Kisiler { private string _isim; private string _mail; public string isim { get { return _isim; } set { _isim = value; } } public string mail { get { return _mail; } set { _mail = value; } } } Script> <html> <body> C# ve ASP.NET Buluşması<br><br> <asp:repeater id="rpt" runat="server"> <ItemTemplate> <%# DataBinder.Eval(Container.DataItem, "isim") + " : " + DataBinder.Eval(Container.DataItem, "mail") %><br> ItemTemplate> asp:repeater> body> html> | |
İsim ve Mail şeklinde sadece iki alana sahip bir sınıf tanımı yapıyoruz. Sayfanın OnLoad olayına yazdığımız fonksiyonda ise, elemanları bu sınıftan oluşan bir dizi tanımlayıp, dizinin elemanlarına değer araması yapıyoruz. Ve HTML alanı içerisinde tanımladığımız Repeater web kontrolünün DataSource özelliğine bu diziyi işaret ediyoruz. Repeater'in DataBind() metodu ile dizideki veriyi listelemiş oluyoruz. Örneğin çalışır hâli.
C# üstünde çok konuşulacak ve yazılacak bir dil. Popüler, şık ve modern. İnternette C# hakkında sıkı kaynaklar da oluştu (Kaynaklar sayfamıza bakınız). Yükselen değer C#, hem programlamaya yeni başlayanlar için, hem de benzer sözdizimine sahip dillerden gelenler için iyi bir tercih olacaktır.
İyi çalışmalar.
