Auf MSDN kann ich lesen, was es tut, aber ich würde gerne wissen, was es technisch macht (sagt Compiler, wo nach Typen suchen ..)? Ich meine, als Richtlinie zu verwenden.Was genau macht die using-Direktive?
Antwort
Die primäre Funktion der using
-Direktive besteht darin, Typen innerhalb eines Namespaces ohne Einschränkung für den Benutzercode verfügbar zu machen. Es berücksichtigt die Menge von Namespaces und Typen, die in referenzierten Assemblys und dem zu kompilierenden Projekt definiert sind.
Nehmen Sie zum Beispiel die folgende Definition in MyTypes.Dll
namespace MyTypes {
class Class1 {}
}
Betrachten wir nun MyTypes.dll
aus einem anderen Projekt mit einem anderen Namespace verweist. Ohne eine Richtlinie mit Class1
erstellen muß ich den Namen qualifizieren
MyTypes.Class1 local1 = new MyTypes.Class1();
Die using
Richtlinie ich entferne diese Qualifikation läßt
using MyTypes;
...
Class1 local1 = new Class1();
using
informiert den Compiler, welche Namespaces nach Namen in der Datei suchen, die in der Datei nicht definiert sind.
@ JaredPar Antwort richtig ist, aber Ich mag würde, dass es hinzufügen funktioniert nicht ganz so wie zB import
in Java. (jemand korrigiert mich, wenn ich falsch bin über Java import
tatsächlich importieren es in den Speicher)
Sie müssen entweder eine DLL oder Projekt-Referenz enthalten, um sogar using
zu verwenden, aber es ist nicht in den Speicher geladen, bis Sie tatsächlich Rufen Sie eine Methode/Eigenschaft/etwas in der Assembly auf. Sie könnten also using System.Linq;
haben, aber wenn Sie keine Linq-Methoden verwenden, wird die Linq-Assembly nie geladen. (Ich bin nicht 100% positiv, dass Linq in seiner eigenen physischen Assembly ist, da Namespaces und Assemblies nicht 1: 1 sind, aber aus Gründen des Beispiels nehme ich an)
Verwenden Sie nur den Compiler zu gehen In der Konfigurationsdatei der Assembly suchen Sie nach einer bestimmten DLL mit dem angegebenen Namen. Wenn die DLL gefunden wird, wird diese DLL mit dem aktuellen Projekt verknüpft. Verwenden ist nur eine Verknüpfungsoperation, um DLL in einem gemeinsam genutzten Speicherbereich miteinander kommunizieren zu lassen. Der Typ unter hier ist richtig
- 1. Was genau macht die Datenbanknormalisierung?
- 2. Was genau macht Panel.IsItemsHost?
- 3. Was genau macht offsetLeftAndRight()?
- 4. Was genau macht fitSystemWindows?
- 5. Was genau macht fillMode?
- 6. Was genau macht Numpy.exp()?
- 7. Was genau macht rangeOfCharacterFromSet?
- 8. Was macht die Einstellung "RAILS_GEM_VERSION" genau?
- 9. Was genau macht die Normalisierung in CSS?
- 10. Was genau macht die Taktik von Z3 genau?
- 11. Was genau macht> $ null?
- 12. Was genau macht System.Diagnostics.Process UseShellExecute?
- 13. Was genau macht gc_heap :: plan_phase?
- 14. Was genau macht ime() Selen?
- 15. Was genau macht 'Mutex lock'?
- 16. Was genau macht dieser Terminalkommando?
- 17. Was macht '#' genau in C?
- 18. Was genau macht "setup.py clean"?
- 19. Was macht Chef :: Log.info genau?
- 20. Was genau macht der Operator ==?
- 21. Was genau macht win32com.client.Dispatch ("WScript.Shell")?
- 22. Was genau macht -march = native?
- 23. WCF: Was genau macht IsInitiating?
- 24. Was genau macht $ (...). Map() zurück?
- 25. Was macht CGAffineTransformMakeRotation (RADIAN) genau?
- 26. was genau macht grid 960?
- 27. Was genau macht `-rdynamic` und wann genau wird es benötigt?
- 28. Was genau macht der c-Ausdruck "c_" genau?
- 29. In Express, was macht app.router genau?
- 30. Was genau macht AlarmManager.ELAPSED_REALTIME_WAKEUP in android
auch, wenn der Typ nicht innerhalb des App-Namespace gefunden wird, wird der Compiler Namespaces durchsuchen, die durch Verwendung enthalten sind, richtig? – Loj
@Mojmi für den gemeinsamen Fall ja. Das Nachschlagen von Namen ist eigentlich ziemlich komplex und ich habe mich nicht genau dazu geäußert, wie es funktioniert, aufgrund der hohen Wahrscheinlichkeit, dass ich die spaßigen Details falsch verstehen würde. – JaredPar