2010-10-21 20 views

Odpowiedz

8

Podstawową funkcją dyrektywy using jest udostępnienie typów w obszarze nazw bez kwalifikacji do kodu użytkownika. Rozważa zestaw przestrzeni nazw i typów, które są zdefiniowane w zestawach referencyjnych i kompilowanym projekcie.

Weźmy na przykład następującą definicję w MyTypes.Dll

namespace MyTypes { 
    class Class1 {} 
} 

Rozważmy teraz przedstawieniu MyTypes.dll z innego projektu z innej przestrzeni nazw. Bez korzystania dyrektywę stworzyć Class1 muszę zakwalifikować nazwą

MyTypes.Class1 local1 = new MyTypes.Class1(); 

Dyrektywa using pozwala mi usunąć tę kwalifikację

using MyTypes; 
... 
Class1 local1 = new Class1(); 
+0

również, jeśli typ nie zostanie znaleziony w przestrzeni nazw aplikacji, kompilator przeszuka przestrzenie nazw zawarte za pomocą, prawda? – Loj

+1

@Mojmi dla wspólnego przypadku tak. Wyszukiwanie nazw jest w rzeczywistości dość skomplikowane i nie komentowałem dokładnie, jak to działa ze względu na wysokie prawdopodobieństwo, że błędne informacje o zabawie będą dla mnie błędne. – JaredPar

0

using informuje kompilator, które przestrzenie nazw mają wyszukiwać nazwy używane w pliku, ale nie zostały zdefiniowane w pliku.

2

@ odpowiedź JaredPar jest poprawne, jednak chciałbym dodać, że nie działa tak samo, jak w języku Java, powiedzmy import. (Ktoś mnie poprawić jeśli się mylę Java import faktycznie importowania go do pamięci)

Trzeba to albo DLL lub odwołanie projektu, aby jeszcze móc korzystać using jednak nie jest ładowana do pamięci, aż faktycznie wywołać metodę/właściwość/coś w zespole. Więc możesz mieć using System.Linq;, ale jeśli nie używasz żadnych metod Linq, zestaw Linq nigdy nie jest ładowany. (Nie jestem w 100% pozytywny, że Linq jest w swoim fizycznym zespole, ponieważ przestrzenie nazw i złożenia nie są w stosunku 1: 1, ale dla przykładu, zakładam, że tak jest)

0

użycie po prostu powiedz kompilatorowi, żeby ruszył do pliku konfiguracyjnego zespołu i wyszukaj konkretną bibliotekę DLL z podaną nazwą, jeśli biblioteka DLL zostanie znaleziona, wówczas łączy dll z bieżącym projektem. używanie jest po prostu operacją łączenia, aby DLL mógł komunikować się ze sobą we współużytkowanej przestrzeni w pamięci. Facet poniżej ma rację: