Merhabalar, bu yazı köprü öncesi son çıkış diyebiliriz. Artık OOP için gerekli olan tüm bilgileri edinmiş olarak, derinlemesine giriş yapmaya hazır olacağız. Normalde bir sınıfın üyesine o sınıftan oluşturulan bir nesne ile erişilmektedir. Örneğin Araba isimli bir sınıfımız var. Bu sınıfın içinde de tekerlek isimli bir değişken var. Eğer değişken static değilse değişkene:
Araba a = new Araba();
a.tekerlek = 4;
şeklinde erişiyoruz. Yani öncelikle sınıfa ait bir nesne oluşturuyor ardından değişken veya metoda ulaşıyoruz. Ancak bazen nesnelerden bağımsız olarak bazı metotlara veya değişkenlere erişmek gerekebilir. Metotlar ve değişkenler static olarak tanımlanabilir.
Static bir metot veya değişken şu şekilde çağrılır;
Araba.Otomobil();
Araba.tekerlek = 4;
“static” değişkenlere global değişkenler diyebiliriz. “static” bir değişkeni tüm üyeler kullanabilir. Yani değeri her yerde aynıdır. Değişken kullanılmadan önce ilk değer ataması yapılır. Eğer ilk değer ataması yapılmazsa nümerik değerler 0, nesne referansları null, bool değişkenler ise false değeri alırlar. Yani static bir değişkenin her zaman bir değeri vardır.
“static” bir metodun this referansı olamaz. “static” bir metot yalnızca kendi sınıfı tarafından tanımlanan static değişkenlere erişebilir. Diğer “static” yapılar;
– static Yapılandırıcılar
Bir sınıfa ait olan özelliklere ilk değerleri atmak için kullanılır.
– static Sınıflar
“static” sınıflar nesne oluşturamaz ve yalnızca static üyeler barındırabilirler.
Bu bilgileri verdikten sonra kod üzerinde biraz daha inceleyelim.
class StaticMetot { // static olarak tanımlanan değişken public static int motor = 1000; public int benzin = 3; // static olmadığı için kendi sınıfından olsa bile static olan bir metot erişemez // static olarak tanımlanan metot public static int Otobus() { // enerji = 200; hatalı kullanım // Insan(); Hatalı kullanım StaticMetot st = new StaticMetot(); st.Otomobil(); // Doğru kullanım st.benzin = 2; // doğru kullanım return motor / 2; } public void Otomobil() // static olmadığı için kendi sınıfından olsa bile static olan bir metot erişemez { } } class StaticOrnek { static void Main() { // static değişkene ilk değer daha sınıfından nesneler oluşmadan atanır Console.WriteLine("İlk atanan değer: " + StaticMetot.motor); StaticMetot.motor = 60; Console.WriteLine("şimdiki değeri: " + StaticMetot.motor); Console.WriteLine("Makine metodunun dönüş değeri: " + StaticMetot.Otobus()); } } static class StaticOrnek2 { // static bir yapılandırıcı örneği static StaticOrnek2 () { int kapi = 4; string isim = "Mercedes"; } static void Minibus() { } }
[…] Faydalanılan Likler; http://www.buraksenyurt.com/post/C-Temelleri-Static-Olmak-bsenyurt-com-dan.aspx http://kod5.org/c-static-kullanimi/ […]
Hay allah razı olsun ya.o
Her yerde roman gibi yazmışlar bişey anlamamıştım
Aman web projelerinde değişken olarak kullanırken dikkat edin 🙂
Merhabalar
Böyle dediğinize göre muhtemelen bir karışıklık başınıza gelmiş veya gördünüz. Bende bu söylemi çok duydum ama bir türlü bir örnek ile karşılaşamadım. Elinizde bu karışıklık ile ilgili örnek var mı ?
yok ama örneğin login olan kullanıcının adını static değişkende tuttunuz sonra başka login olan kullanıcı bu değişkeni doldurdu.İlk giren kullanıcı son girenin bilgilerini görür
“static” bir metodun this referansı olamaz.
burayı anlayamadım
static olmayanların this referansı mı oluyor ?
this referansı olması ne demek ?