Static yapıcı ne zaman çalışır
Static yapıcının ne zaman ve nasıl çalıştığını öğrenirsin.
Static yapıcı metot
Bir statik yapıcı (static constructor), sınıf ilk yüklendiğinde yalnızca bir kez çalışır. Parametre almaz ve erişim belirleyicisi olmaz. Tanımı: static Logger() { ... }.
Statik yapıcı, statik alanları ilk kullanımlarından önce hazırlar. Örnek: yapılandırma dosyasından değer okumak, önbellek kurmak veya sayaç sıfırlamak için uygundur. Sınıfın herhangi bir statik üyesine ilk erişimde veya ilk örnek üretiminde tetiklenir.
Statik yapıcı ne zaman çalışır?
Statik yapıcı, sınıfın ilk kullanımında otomatik tetiklenir. İlk statik alana erişim, ilk statik metot çağrısı veya ilk örnek üretimi buna dahildir.
Örnek: Logger.Count okunduğunda, henüz örnek üretilmemiş olsa bile statik yapıcı çalışır ve Count'u hazırlar. Statik yapıcının ne zaman çalışacağını kesin olarak kestirmek zor olabilir; bu yüzden yan etkilerden kaçınılmalıdır.
Uygulama Günlükleme sayacı
Logger sınıfına static Logger() yapıcısı ekle; gövdesi Count = 0; ataması yapsın. Main içinde Logger.Log("Başladı") çağırıp Logger.Count'u yazdır.
Örnek çözümü göster
Logger içine `static Logger() { Count = 0; }` ekle. Main içine `Logger.Log("Başladı"); Console.WriteLine(Logger.Count);` yaz.
Örnek çözüm:
using System;
class Logger
{
public static int Count;
static Logger()
{
Count = 0;
}
public static void Log(string message)
{
Count++;
Console.WriteLine(message);
}
}
class Program
{
static void Main()
{
Logger.Log("Başladı");
Console.WriteLine(Logger.Count);
}
}
Kendini test et
-
Eşleştir: statik yapıcı özellikleri
- parametre
- almaz
- erişim belirleyici
- yok
- çalışma sayısı
- bir kez
- tetiklenme
- ilk statik erişim
-
Static yapıcı ile ilgili hangisi doğrudur?
- Static yapıcı parametre alabilir.
- Static yapıcı `public` olarak işaretlenir.
- Static yapıcı yalnızca bir kez çalışır.
- Static yapıcı örnek üretiminde çalışmaz.
Cevabı göster
Static yapıcı yalnızca bir kez çalışır. — Doğru. Statik yapıcı sınıf ömrü boyunca yalnızca bir kez çalışır.
-
Boşluğu doldur: statik yapıcı tanımı
class Logger { public static int Count; ____ { Count = 0; } }Cevabı göster
class Logger { public static int Count; static Logger() { Count = 0; } }