|
|
| C#
diline GİRİŞ I |
| Geçen
yazımızda .NET Platformu için en uygun uygulama geliştirme dilinin C# olduğunu
yazmıştık. Bu nedenle ben burada ASP.NET derslerinde C# dilini uygulamalarımda
temel dil olarak kullanacağım. Sizinde bu konuları çok rahat anlayabilmeniz
için öncelikle C# dilinin temel özelliklerine, yapısına ve syntaxına bir
göz atmamız gerekmektedir. Ancak C# ı çok iyi anlayabilmeniz için sizinde
bu konuda bol miktarda örnek yapmanız ve özellikle de bu konu ile ilgili
dökümantasyon temin ederek konuları daha detaylı incelemeniz gerekmektedir.
Ben C# diline giriş konusunu iki yazı ile geçmeyi düşünüyorum. Bu nedenle
yazılarımızda C# diline çok derinlemesine girmeyeceğiz. |
| 1
. GİRİŞ |
| C# (okunuşu
C Sharp), C ve C++ dillerinden çıkma olup, basit, modern, nesne tabanlı(object
orianted) ve çeşit-güvenirlikli(type-safe) bir programlama dilidir.
C#, Visual Basic dilinin kolaylığına ve C nin gücüne sahip diyebiliriz.
C# progralama dilini kullanarak program yazabilmek için Microsoft
Visual Studio.NET'i kullanabilrisiniz. Visual Studio.NET C#'ın yanısıra
VB.NET ve Visual C++ programlama dillerini ve bunun yanında VBScript
ve JScript script dillerini içerir. Bütün bu diller bir önceki yazımızdada
belirttiğimiz NGWS (Next Generation Windows Services ) platformu üzerine
yapılandrılmış ve bu platformun gücünü ve kolaylıklarını kullanmaktadırlar.
NET yazılım geliştirme Kit'i bize CLS (Comman Language Subset) uyumlu
diller (yani .NET dilleri) ve class kütüphanelerini kullanabilme imkanı
sunar. Bunun anlamı C# yeni bir dil olmasına rağmen Visual Basic ve
Visual C++ 'ın kullandığı zengin class kütüphaneleri kullanabilmesi
demektir. Şimdi artık yavaş yavaş bu dilin özelliklerine ve kullanılmasına
geçelim. Ancak burada daha önce script dilleri yada asp harici programlama
yapmamış arkadaşlara kolay gelsin demek isterim. Şimdi isterseniz
her yeni programlama dilini öğrenirken yaptığımı geleneği bozmayalım
ve C# ile "Merhaba Dünya" diyelim. |
| 1.1 Merhaba
Dünya |
|
C# dilinde "Merhaba Dünya"yı
aşağıdaki gibi diyebiliriz.
using System;
class Merhaba
{
static void Main()
{
Console.WriteLine("Merhaba
Dünya");
}
} |
Bu kodları yazdıktan sonra bu programımızı
merhaba.cs olarak kaydedelim. Kaydedilen bu programı
derleyip
kullanılabilir koda çevirmek için C# derleyicisinin makinenizde olması
gerekir. Daha sonra bu programı csc Merhaba.cs olarak
derleyebilirsiniz ve ortaya çıkan ürün Merhaba.exe olacaktır.
(MS DOS Promt'ta) Bu exe çalıştığında sonuçta ekrana; Merhaba
Dünya yazısı çıkacaktır. Şimdi bu program satırlarını kısaca
inceleyelim.
- using System : C# dili
C dillerinden farklı olarak header dosyaları kullanmaz. Bunun
yerine namespace'ler kullanır. Bu programımız .NET'in
System namespace 'ini kullanmaktadır. Bu namespace Console
class'ının Main method'una referansını içermektedir.
Namespaceler herhangi bir class kütüphanesinin hiyerarşik
yapısını içinde barındırır. using komutu programa bu namespace
kullanması gerektiğini anlatır.
- class Merhaba : Bu komut
satırında ise programımız için bir class (sınıf) oluşturuyoruz.
- static void Main() : Her
C# programı için bir giriş noktası(entry point) gerekmektedir.
Bu şekilde program nereden çalışması gerektiğini bilecektir. Burada
Main fonksiyonu bunu belirtir. Program ilk çalıştığında
direk Main fonksiyonunu çalıştıracaktır. Burada static
ve void komutlarını daha sonra ne demek olduklarını göreceğiz.
- Console.WriteLine : Bu
komut aslında System.Console.WriteLine komutunun kısalmış
halidir. Programımızın başında System namespaceinin programa
kullanılacağını belirttiğimiz için burada baştaki System yazılmamıştır.
Daha öncede belirttiğimiz gibi C# programlarımız namespaceler
kullanır. Her namespace kendi içerisinde class'ları ve her class
da kendi içerisinde method'ları barındırır. Yani burada Console
bir class ve WriteLine da onun içerisinde bir methoddur. Bu method
MS-DOS Promt ta ekrana yazdırma methodudur. Aynı asp deki Response.Write
komutu gibi ekrana çıktı verir.
Programımız çalıştığında ilk başta
ona System namespace'ini kullanması söylenir. Bu sayede Console
classımız programımız tarafından kullanılmaya hazır hale
gelir. Daha sonra programımızın giriş noktasından program çalışmaya
başlar yani Main fonksiyonundan. Main fonksiyonu içerisinde
ise Console classının WriteLine methodu kullanılarak
ekrana "Merhaba Dünya" yazısı yazdırılır. Evet
gördüğünüz gibi karışık gözükmesine rağmen aslında çok kolay bir
işleyiş var. Namespaceler sayesinde .NET 'in sağladığı tüm olanaklara
ulaşmak çok kolay. Bunu sadece gerekli_namespace.gerekli_class.gerekli_method
olarak ta gösterebiliriz. Ancak sürekli gerekli namespace'in program
içerisinde yazılmasından kurtarmak için programın başına using
komutu ile o namespace aktarılır.
|
| 1.2 Otomatik
Hafıza Yönetimi |
| Bu konu
üzerinde fazla durmayarak kısaca anlatıp geçeceğiz. Bu yöntem C#'ın
programcılara sunduğu büyük bir imkan olup C# programı bu yöntem aracılığı
ile programcının program esnasında oluşturduğu ve daha sonra artık
gerek kalmayan verilerin hafızadan silinmesi anlamına gelmektedir.
Bu işlem programa hız katmaktadır. |
| 1.3 Çeşitler
(Types) |
|
C# kullanıcılara iki farklı veri
çeşidi sunmaktadır. Bunlar C# değer çeşitleri(value types)ve referans
çeşitleri(reference types). Değer çeşitleri; basit çeşitler(simple
types), enum çeşitleri(enum types) ve struct çeşitleri(struct types)
dırlar. Reference Type'lar ise class typeları (sınıf çeşitleri),
interface typeları, delegate typeları ve array typelarıdır.
Value Typeların ve Reference Typeların arasındaki en büyük fark
Value Typelar direk kendi değerlerini içerirken Reference Typelar
bir objeye referans ederler. Referance Typelar içerisinde birden
fazla değişkenin aynı objeye referans etmesi mümkündür. Bu şekilde
Referans Typelarda bir objeye referans eden bir değişken aynı objeye
referans eden başka bir değişken değiştirilerek değiştirilebilirken,
Value Typelarda bu imkansızdır. Bu biraz karışık gözükse de bunu
bir örnekle açıklayalım.
using System;
class Class1 // Yeni bir Class açıyoruz ve
adıda Class1
{
public int Deger = 0; // yeni bir integer
değişken tanımlıyoruz. Adı : Deger ve değeri = 0
}
class Deneme // Deneme Adlı yeni bir class
açıyoruz
{
static void Main() { //
Programımız için bir giriş noktası tanımlıyoruz.
int value1 = 0; //
Yeni bir Value değer yani integer tanımlıyoruz. Adı: value1 ve değeri
: 0
int value2 = value1;
// Yeni bir Value değer yani integer tanımlıyoruz. Adı: value2 ve
değeri : value1'in değerine eşit
value2 = 123; //
value2 adlı değişkenin değerini 123 olarak atıyoruz.
Class1 reference1 =
new Class1();
//reference1 adlı yeni bir referans obje tanımlıyoruz
ve bunun yapısını Class1 den alıyoruz.
Class1 reference2 = reference1;
//reference2 adlı yeni bir referans obje tanımlıyoruz,
buda bir Class1 yapısı ve bunun değerinide reference1'in değerine
eşitliyoruz.
referencef2.Deger = 123; //reference2
objesinin içerisindeki Deger değişkenini 123 olarak atıyoruz.
Console.WriteLine("Valuelar:
{0}, {1}", value1, value2); // Ve burada
value değişkenleri ekrana yazdırıyoruz.
Console.WriteLine("Referanslar:
{0}, {1}", reference1.Deger, reference2.Deger); //Burada
da reference typeları ekrana yazdırıyoruz.
}
} |
Programımızın Çıktısı :
Valuelar: 0, 123
Referanslar: 123, 123
şeklinde olacaktır. Görüldüğü gibi value typelar'dan ikincisini birinciye
eşitledikten sonra ikinciye 123 değerini vermemize rağmen birincinin
değeri hala ilk değeri olan 0. Çünkü value typelar'da objeye bir
referans olmayıp direk data kendi içerisinde depolanır. Burada value1'a
0 değeri verildikten sonra value2 value1 e eşitleniyor. Bu durumda
value2 nin değeri de 0 oluyor. Daha sonra value2'nin değerini 123
yapsak ta bu sadece kendisine etkiyor. Ancak referans typlar'da durum
daha farklı. Sonuçta bizim class1 adlı bir Class'ımız ve bu class
içindede Deger adlı bir integer değişkenimiz var. Biz reference1
ve ikiyi direk bu Class1 e referans gösterdiğimiz için Class1'in
içindeki Deger değişkeni ikisi içinde ortaktır ve hangi değeri alırsa
ikisinde de aynı değeri almaktadır.
Umarım çok karmaşık olamamıştır ...
Not: Bu yazı yazarın
MaxiASP.Com'daki
yazısının parçalanmış halidir.
|
|
|
|
|
| |
| Bu içerik ile ilgili
daha önce yapılmış yorumlar |
|
Bu içerik ile ilgili yapılmış bir yorum yok, ilk yorumu siz yapmak için aşağıdaki formu doldurunuz
|
|
|