2009-02-17 8 views
7

Speichert Using Namespace; mehr Speicher?Bedeutet `Using Namespace;` mehr Speicher?

Ich arbeite derzeit an einer mobilen Anwendung und ich war nur neugierig, wenn diese unnötigen Verwendung von Anweisungen, die Visual Studio beim Erstellen einer Klasse setzt, meine Anwendung benötigt etwas zusätzlichen Arbeitsspeicher zum Ausführen benötigt.

Antwort

13

Um es einfach auszudrücken: nein.

Diese Aussagen werden nicht in irgendeine Form von IL übersetzt. Sie sind nur Abkürzungen, um (hässliche!) Vollständig qualifizierte Typnamen zu vermeiden. Aber, wenn Sie VS2008 und/oder R # verwenden, können Sie unbenutzte automagisch entfernen.

+0

automatisch, nette eins. – tafa

1

Nein, es wird nur der Compiler machen ein klein wenig langsamer laufen :)

5

Namespaces sind eine Kompilierung-nur-Funktion von C# mit denen Sie Zeit während der Entwicklung zu sparen. Die using-Direktiven werden vom Compiler verwendet, um in Ihrem Code Kurzschreib-Typnamen nachzuschlagen.

Grundsätzlich jedes Mal, wenn der Compiler in Ihrem Code auf einen Typnamen stößt, der nicht weiß, dass er jede Anweisung using akzeptiert und ihn dem Namen des Typs voranstellt, sieht er, ob dieser vollständig qualifizierte Name verrechnet wird.

Sobald die Anwendung kompiliert wurde, sind die Namespaces und die using Direktiven verschwunden, da die IL sie nicht benötigt.

0

Es tut es nicht. Es wird verwendet, damit Sie das Objekt, das Sie verwenden, nicht mit Ihrem vollständigen Namen definieren müssen. Anstelle von System.IO.File können Sie einfach File ausführen, wenn Sie System.IO verwenden.

Es wird nicht in den Speicher geladen, bis Sie das Objekt tatsächlich erstellen. Im Gegensatz zu C++ wird die gesamte Bibliothek nicht importiert, da das .NET-Framework auf dem Zielcomputer installiert und in den GAC geladen wird und sich Ihre benutzerdefinierte DLL im Ordner bin des Anwendungsordners befindet.

2

Nein, tut es nicht. Es ist einfach eine Abkürzung, damit Sie nur die Typenbezeichnung

String

Im Gegensatz zu den Namespace-Typnamen verwenden:

System.Text.StringBuilder

In der Datei, in der Die using-Anweisung wird deklariert.

3

Wenn Sie mit "Erinnerung" meinen, "ich muss mich erinnern, warum ich die, die Anweisungen verwenden, ganz oben stehen", dann ja.

Aber nein, nicht in dem Sinne, den Sie meinen. .NET-Assemblys werden normalerweise auf Anforderung geladen, sodass Sie keine zusätzlichen Leistungseinbußen durch diese zusätzlichen Anweisungen erleiden. Aus Wartungsgründen sollten Sie sie jedoch entfernen.

+1

Unterschätzen Sie nie die "OutOfMemoryExceptions", die im Kopf des Entwicklers auftreten. – bzlm

+0

+1 schöne Analogie –

3

Hier finden Sie die Microsoft-Informationen zum Schlüsselwort "using" in diesem Zusammenhang: http://msdn.microsoft.com/en-us/library/sf0df423.aspx. Es bietet im Grunde eine Alternative zur Verwendung des vollqualifizierten Namens für eine Assembly, importiert oder enthält jedoch nicht die Assemblys im Speicher mit diesem bestimmten Schlüsselwort.

Verwandte Themen