Sur MSDN je peux lire ce qu'il fait, mais je voudrais savoir ce qu'il fait techniquement (dit au compilateur où chercher les types ..)? Je veux dire utiliser comme une directive.Que fait exactement la directive using?
Répondre
La fonction principale de la directive using
est de rendre les types dans un espace de noms disponibles sans qualification pour le code utilisateur. Il considère l'ensemble des espaces de noms et des types qui sont définis dans les assemblys référencés et le projet en cours de compilation.
Prenez par exemple la définition suivante dans MyTypes.Dll
namespace MyTypes {
class Class1 {}
}
considèrent maintenant le référencement MyTypes.dll
d'un autre projet avec un espace de noms différent. Sans une directive à l'aide pour créer Class1
je dois qualifier le nom
MyTypes.Class1 local1 = new MyTypes.Class1();
La directive using
me laisse toutefois supprimer cette qualification
using MyTypes;
...
Class1 local1 = new Class1();
using
indique au compilateur quels espaces de noms doivent rechercher les noms utilisés dans le fichier mais non définis dans le fichier.
@ La réponse de JaredPar est correcte, je voudrais ajouter que ne fonctionne pas tout à fait de la même manière que import
en Java. (Quelqu'un me corriger si je me trompe sur Java de import
fait l'importer dans la mémoire)
Vous devez inclure soit une DLL ou une référence de projet afin de même être en mesure d'utiliser using
mais il est pas chargé en mémoire jusqu'à ce que vous avez réellement appeler dans une méthode/propriété/quelque chose dans l'assemblage. Donc vous pouvez avoir using System.Linq;
mais si vous n'utilisez pas de méthodes Linq, l'assemblage Linq n'est jamais chargé. (Je ne suis pas 100% positif que Linq est dans son propre assemblage physique puisque les espaces de noms et les assemblages ne sont pas 1: 1, mais pour l'exemple je suppose qu'il est)
en utilisant juste dire au compilateur d'aller dans le fichier de configuration de l'assembly et recherchez une DLL spécifique avec le nom donné, si la DLL est trouvée, elle lie cette DLL dans le projet en cours. l'utilisation est juste une opération de lien pour que les DLL se parlent entre elles dans un espace partagé en mémoire. Le gars ci-dessous est juste
- 1. Que fait exactement Panel.IsItemsHost?
- 2. Que fait exactement FillMode?
- 3. Que fait exactement @synthesize?
- 4. Que fait exactement visibleContentsAsDataURL?
- 5. Que fait exactement MIBCC.EXE?
- 6. Que fait exactement rangeOfCharacterFromSet?
- 7. Que fait exactement reloadData?
- 8. Que fait exactement System.Diagnostics.Process UseShellExecute?
- 9. Que fait exactement l'utilitaire "ar"?
- 10. Que fait exactement la méthode .join()?
- 11. WCF: Que fait exactement IsInitiating?
- 12. Que fait exactement -march = natif?
- 13. Que fait exactement ce programme OpenCV?
- 14. EntityClient Provider - Que fait-il exactement?
- 15. Que fait exactement Windbg "d esp"?
- 16. Que fait le réglage "RAILS_GEM_VERSION" exactement?
- 17. Que fait exactement "foo = (foo + 1)% bar"?
- 18. Que fait exactement Up Vector dans DirectX?
- 19. Que fait exactement ce code ML standard?
- 20. Que fait un gestionnaire de racks exactement?
- 21. Que fait la directive ORG dans le code d'assemblage?
- 22. Que fait exactement la clause "Over" dans T-Sql?
- 23. Que fait exactement la règle de suppression de Nullify?
- 24. @Scheduled & scheduler: Que fait exactement la taille du pool?
- 25. Que fait exactement Response.Redirect ("~/...") dans la réponse HTTP?
- 26. Qu'est-ce que CDATA et que fait-il exactement?
- 27. Que fait exactement "map.resource" dans le fichier de route?
- 28. Que fait exactement cette syntaxe de javascript getElementsByTagName?
- 29. Que fait exactement le profilage C++ (google cpu perf tools)?
- 30. que fait exactement le mot-clé prototype dans jquery?
également, si le type n'est pas trouvé dans l'espace de noms de l'application, le compilateur va chercher dans les espaces de noms inclus en utilisant, non? – Loj
@Mojmi pour le cas commun oui. Recherche de nom est en fait assez complexe et je n'ai pas spécifiquement commenté exactement comment cela fonctionne en raison de la forte probabilité que j'obtiendrais les détails amusants faux. – JaredPar