2012-07-09 28 views
5

Tüm bir ad alanını içe aktarma ile tek bir sınıf içe aktarmak için takma ad kullanma arasında bir performans farkı var mıdır? Eğer öyleyse, ne kadar fark var?C# içindeki takma ad kullanarak tüm ad alanı içe aktarma arasındaki performans?


Örnekler:

bütün bir ad İthalat:

using System.Reflection; 

Aliasing yalnızca bir sınıf ithal etmek:

using BindingFlags = System.Reflection.BindingFlags; 

DÜZENLEME: neden olarak açıklama Biraz senin Cevap, çok takdir edileceği yoldur ... başka bir deyişle, bir şeyden daha fazlası sadece bir evet/hayır cevabı lütfen. Ve belki de bazı yetkili kaynaklar tarafından desteklenen bir şey?

+0

['yerine' kullanarak 'herhangi bir avantaj sağlayın?] Olası kopyası (http://stackoverflow.com/questions/3911141/does-using-provide-any-advantages) – mbeckish

+2

Bir takma ad, ImpediDense tarafından sunulan daha az karmaşaya neden olmalıdır IntelliSense. – HABO

cevap

9

Sıfır. Ad alanı içe aktarımları bir derleme zamanı özelliğidir ve oluşturulan IL her iki şekilde de aynı olacaktır.

+0

Montajlar ne zaman yüklenecekler? Yalnızca belirtilen sınıflar tüm ad alanında tüm sınıflar yüklenmez ve yüklenmez mi? – bsara

+0

@Brandon Performans sonuçları, projeye başvuru olarak .dll eklenmiştir. 'Using' ifadesinin eklenmesi, bu dll'lerden neyin yüklenip yüklenmediğini etkilemez. – Servy

+0

@Brandon: Bu tamamen farklı bir özellik. Ad alanı içe aktarmaları, kaynak kodu için basit bir şekilde zaman tasarrufu/okunabilirlik geliştirmeleridir, sonuçta ortaya çıkan kod, System.Collections.Generic.List (örneğin) gibi şeyler yazmış olmanızla tamamen aynıdır. Montaj yükleme ve tip çözünürlüğü doğrudan ad alanı ithalatı ile ilgili değildir. – Alan

4

Hayır, yalnızca programcı için bir yardımcıdır, derleyici tarafından oluşturulan CIL tam olarak aynıdır.

+0

Hiçbir CIL üretilmiyor, değil mi? Ne içermeli? Bu derleme zamanı yönergesi –

+0

@KierenJohnstone: Elbette, CIL'in tüm program için oluşturulduğunu söylemeyi kastediyorum. – BlackBear

3

Hiç bir performans farkı yok. Biri 'bir sınıf adı belirttiğimde buraya bak, burada olabilir' diyor. Diğeri 'bu dersi ya da ad alanını söylediğimde, bunu kullanıyorum' diyor.

-1

Daha da geniş değil. .net çekirdeğini içeren dll'yi yüklersiniz ve içinde düzinelerce ad alanı bulunur. Zaten yüklenmiş olan dll'nin dışına çıkana kadar ad alanlarını almak için gerçekten bir vuruş yapmazsınız.

İlgili konular