2009-03-12 10 views
3

Bellek kullanımında aşağıdaki eşittir?Harici ad alanında bir yöntem/değişkene, tamamen dahil etmekten daha fazla bellek etkinliğine atıfta bulunuyor mu?

System.Threading.Thread.Sleep(500); 

vs

using System.Threading; 
... 
Thread.Sleep(500); 
ben bellekte sen kullanarak 'konum az ad daha iyi, ama eski örneği belleğe ad yüklemek olduğunu duydum düşünürdü

ne olursa olsun. Biliyorum, Sleep bellek aç yönteminin en iyi örneği değil, sadece bir örnek.

cevap

8

using bildirimi hiçbir şeyin yüklenmesine neden olmaz, yalnızca derleyiciye sınıfları nerede arayacağını belirtir.

İki örnek tam olarak aynı kodu üretir.

+0

Mükemmel teşekkürler! –

2

CLR kodunun derlendiği durumlarda "include" ifadesini "include" ifadesine sahip bir "using" deyimi ile eşleştirebileceğinizi sanmıyorum - CLR kodu derlendiğinde, aslında kullanılmayan belirtilen ad alanlarını yok sayar. montaj.

using ifadesi için:

  • nerede (Guffa tarafından belirtildiği gibi) daha kolay geliştiricilerin sınıflar ilan etmek için yapılması
  • sınıflar aramaya derleyici anlatmak - tam olarak yazmak zorunda hayal Her bir deklarasyonda her seferinde nitelikli sınıf adı

Derleyici, optimizasyondan sorumlu olacak, endişelenmenize gerek yok.

3

Bu ikisi, diğer mesajlarda da belirtildiği gibi derlendiğinde tam olarak aynı IL'yi üretir.

Ancak bir fark var. İlk seçenek açıkça derleyicinin sınıf/yöntem/struct/etc için nereye gideceğini bilmesini sağlar. İkinci seçenek, derleyicinin aranacak ad alanlarının listesindeki ad alanını (System.Threading) içerir.

İfadeleri kullanırken birçok ad alanınız varsa, derleyici bu dosyayı derlemek için daha uzun sürebilir. C# ile, bu muhtemelen umursadığınız bir şey değil, çünkü derleyici çok hızlı, ama yavaşlıyor.

Çok büyük bir proje ve çok büyük ad alanlarıyla (başka nedenlerden dolayı iyi bir fikir değildir), bu durum fark edilebilir (yine de ince olmasına rağmen).

İlgili konular