C# İfadesini Kullanma

C Ifadesini Kullanma



Veritabanı bağlantıları, belge akışları veya ağ bağlantıları gibi kaynaklar elden çıkarılırken, uygun bir imhanın sağlanması için C# dilindeki 'using' ifadesi kullanılır. IDisposable arayüzüne uygun nesnelerin yönetimi bu yaklaşımla daha basit hale getirilir. Kaynağın üretildiği ve kullanıldığı kod bölümü, herhangi bir 'using' ifadesi bildirildiğinde oluşturulur. Bloktan çıkmak için normal bir işlem veya bir istisna kullanılırsa, kontrolsüz kaynakları serbest bırakmak ve gerekli temizliği gerçekleştirmek için nesnenin Dispose() işlevi hemen çağrılır. Bu kılavuzda, C# “using” ifadesinin kullanımıyla belge akışı kaynaklarını ele alacağız.

Sözdizimi:

C#'ın 'using' ifadesi, açıkça imha edilmesi gereken kaynakları rahat ve güvenli bir şekilde yönetmek için kullanılır. Aşağıdaki gibi belirli bir sözdizimini takip eder:

kullanarak ( Kaynak Türü kaynağı = yeni Kaynak Türü ( ) ) { // Kod }
  • “using” anahtar sözcüğü “using” ifadesini bildirmek için kullanılır.
  • 'Using' anahtar sözcüğünden sonra, çalışmak istediğiniz kaynak türünü ve ardından blok içindeki kaynağı temsil eden bir değişken adını belirtirsiniz. IDisposable arayüzünü gerçekleştiren herhangi bir nesne niteliklidir. Gerektiğinde blok içindeki kaynak üzerinde işlem yapabilirsiniz.
  • Daha sonra, kaynak türünün yeni bir örneğini değişkene atamak için eşittir işareti (=) kullanılır.
  • Burada, kaynak türünde yeni bir nesne oluşturmak için “yeni” anahtar sözcüğü kullanılır.
  • New anahtar sözcüğünden sonra parantez içinde herhangi bir ek başlatma veya yapılandırma gerçekleştirilebilir.
  • Son olarak, kaynağı kullanan kodu süslü parantezlerin {} içine alırsınız.

Örnek 1:

Bu makalede C# 'using' ifadesinin kullanımını göstermek için C# kod örnekleriyle başlayalım. Verilen kod, bir metin dosyasının içeriğini “using” ifadesi içerisinde “StreamReader” sınıfını kullanarak okuyan bir C# programını kapsamaktadır.







Program, giriş/çıkış işlemleri ve dosya işleme için sınıflar sağlayan gerekli ad alanlarını (System ve System.IO) içe aktararak başlar. Program “Dummy” adında bir sınıf tanımlar. “Dummy” sınıfının içinde, genel programı baştan sona yürütmek için her zaman herhangi bir C# programının girdisi olarak değerlendirilmesi gereken bir Main() yöntemi vardır.



Main() yöntemi, “fp” dize değişkenini bildirip ona “test.txt” değerini atayarak başlar. Bu, okunacak metin dosyasının dosya yolunu temsil eder. Dosyaları okurken ortaya çıkabilecek tüm olası hatalarla başa çıkmak için try-catch bloğu kullanılır.



Try bloğu içinde, “StreamReader” sınıfının bir örneğini oluşturmak için “using” ifadesi kullanılır. Bir dosyanın içeriğini anlama görevi “StreamReader”a düşüyor. “Fp” değişkeninde saklanan dosya yolu “StreamReader” yapıcısına aktarılır ve okunacak dosyayı belirtir.





“Using” bloğunun içinde, belgenin son satırı görünmediği sürece dosyanın içeriği “while” döngüsü kullanılarak satır satır incelenir. Döngü, “StreamReader”ın ReadLine() yöntemini kullanarak bir satırı okur ve onu “l” dize değişkenine atar. Satır boş değilse, Console.WriteLine(l) kullanılarak konsola yazdırılır.

Dosyanın sonuna ulaşıldığında ve okunacak satır kalmadığında, “using” bloğundan çıkılır ve “using” ifadesi nedeniyle “StreamReader” nesnesi otomatik olarak imha edilir. Catch bloğu, bir belge okunurken bir IOException ortaya çıktığında etkinleştirilir. İstisna mesajı e.Message kullanılarak elde edilir ve Console.WriteLine() kullanılarak konsolda bir hata mesajı görüntülenir.



Programın yürütülmesi tamamlanır ve konsol çıktısı görüntülenir. “Test.txt” dosyasının var olduğunu ve birkaç satırlık metin içerdiğini varsayarsak, bu kodun çıktısı, aşağıdaki ekteki görüntüde gösterildiği gibi konsolda yazdırılan dosyanın içeriği olacaktır. Çıktıda her satır ayrı ayrı gösterilir:

Sistemi kullanma ;

Sistemi kullanarak. IO ;

sınıf Kukla {

statik geçersiz Ana ( ) {

dize fp = 'test.txt' ;

denemek {

kullanarak ( StreamReader okuyucu = yeni StreamReader ( fp ) )

{

dize l ;

sırasında ( ( ben = okuyucu. Okuma Hattı ( ) ) != hükümsüz )

{

Konsol. Yazı çizgisi ( ben ) ;

}

}

}

yakalamak ( IOException e ) {

Konsol. Yazı çizgisi ( 'Hata oluştu: ' + Bu. İleti ) ;

}

}

}

Not: 'Test.txt' dosyası mevcut değilse veya dosya erişimi veya okumayla ilgili bir sorun varsa, catch bloğu yürütülür ve konsolda meydana gelen özel istisnayı belirten bir hata mesajı görüntülenir.

Örnek 2:

Verileri bir dosyaya yazmak için C# 'using' ifadesinin StreamWriter ile kullanımını gösteren başka bir basit örnek. Beklenen çıktıyla birlikte kodun bir açıklamasını burada bulabilirsiniz. Kod, sonunda programı başlatacak ve sonlandıracak olan “Dummy” sınıfının ve “Main” yönteminin bildirimiyle başlar.

“Main” yönteminde “fp” string değişkeni “test.txt” dosya yolu ile bildirilir ve başlatılır. Bilginin yazıldığı belge bununla temsil edilir. Belge yazma süreci boyunca ortaya çıkabilecek herhangi bir olası IOException ile başa çıkmak için program bir try-catch bloğu içine alınmıştır.

Try bloğunun içinde, “writer” adında bir StreamWriter nesnesi oluşturulur ve “using” ifadesi kullanılarak başlatılır. StreamWriter, bir dosyaya karakter yazmaktan sorumludur. Yazar nesnesinin WriteLine fonksiyonu aracılığıyla “kullanılıyor” kısmındaki bir belgeye iki ayrı içerik satırı eklenir. Bloktan çıkıldığında StreamWriter'ın Dispose() yöntemi otomatik olarak çağrılır ve bu, bekleyen verilerin dosyaya yazılmasını ve gerekli kaynakların serbest bırakılmasını sağlar.

Son olarak, “kullanılıyor” bloğunun dışında “Veri başarıyla yazıldı.” Konsolda belgenin yazma işleminin başarılı ve hatasız olduğunu gösteren mesaj görüntülenir. Belgenin yazma işlemi sırasında herhangi bir IOException meydana gelirse catch bloğu etkinleştirilir. Bu durumda, konsolda özel istisna mesajıyla birlikte bir hata mesajı görüntülenir.

Sistemi kullanma ;

Sistemi kullanarak. IO ;

sınıf Kukla {

statik geçersiz Ana ( ) {

dize fp = 'test.txt' ;

denemek {

kullanarak ( StreamWriter yazarı = yeni StreamWriter ( fp ) )

{

yazar. Yazı çizgisi ( 'Merhaba C-Sharp!' ) ;

yazar. Yazı çizgisi ( 'Bu bir deneme metnidir.' ) ;

}

Konsol. Yazı çizgisi ( 'Veriler başarıyla yazıldı.' ) ;

}

yakalamak ( IOException e ) {

Konsol. Yazı çizgisi ( 'Hata oluştu: ' + Bu. İleti ) ;

}

}

}

Özetle kod, 'using' ifadesini kullanarak bir StreamWriter nesnesi oluşturur, bir dosyaya iki satırlık metin yazar ve ardından StreamWriter'ı otomatik olarak ortadan kaldırır. Yazma işlemi başarılı olursa yazılım bir başarı mesajı üretir. Aksi halde herhangi bir IOException oluştuğunda bir hata mesajı verir.

Çözüm

C#'ın 'using' ifadesi, açık bir şekilde elden çıkarılması gereken kaynakların yönetilmesi için pratik ve güvenli bir yöntem sunar. Kaynak tüketimini bir “kullanma” bloku içine alarak gerekli temizleme işlemlerinin otomatik olarak yapılmasını garanti edebilir ve kaynak sızıntısı olasılığını azaltabilirsiniz. Bu, kodunuzun güvenilirliğini artırır.