2009-02-17 17 views
7

¿Using Namespace; consume más memoria?¿`Using Namespace;` consume más memoria?

Actualmente estoy trabajando en una aplicación móvil y tenía curiosidad por saber si las declaraciones innecesarias que usa el estudio visual al crear una clase hacen que mi aplicación requiera un poco de memoria extra para ejecutarse.

Respuesta

13

Para decirlo simplemente: no.

Esas declaraciones no están traducidas a ninguna forma de IL. Son solo accesos directos para evitar el uso de nombres de tipos completamente feos. Pero, si usa VS2008 y/o R #, puede eliminar los que no se usen automágicamente.

+0

automágicamente, buena. – tafa

1

No, sólo hará que el compilador ejecuta un poquito más lento :)

5

Los espacios de nombres son un tiempo de compilación única característica de C# que le permiten ahorrar tiempo durante el desarrollo. Las instrucciones using son utilizadas por el compilador para buscar nombres abreviados de Tipo en su código.

Básicamente, cada vez que el compilador encuentra un nombre de tipo en su código que no sabe que toma cada directiva using y lo antepone al nombre del tipo y ve si ese nombre completo se resuelve.

Una vez que se compila la aplicación, los espacios de nombres y las directivas using se han ido ya que IL no los necesita.

0

No es así. Se usa para que no tenga que definir el objeto que está utilizando con su nombre completo. En lugar de System.IO.File puede simplemente hacer File si está utilizando System.IO.

No se carga en la memoria hasta que realmente cree el objeto. A diferencia de C++, no se importa toda la biblioteca, porque .NET Framework está instalado en la máquina de destino y cargado en el GAC, y su .dll personalizado está en la carpeta bin de la carpeta de la aplicación.

2

No, no es así. Simplemente es un atajo que le permite usar solamente el nombre del tipo de

StringBuilder

A diferencia del nombre del tipo de espacio de nombres:

System.Text.StringBuilder

En el archivo donde la declaración de uso es declarada.

3

Si con "memoria" te refieres a "Tengo que recordar por qué puse esas declaraciones de uso en la parte superior en primer lugar", entonces sí.

Pero no, no en el sentido en que te refieres. Los ensamblados .NET normalmente se cargan a pedido, por lo que no tendrá ninguna penalización de rendimiento al tener esas declaraciones adicionales. Sin embargo, en aras de la mantenibilidad, querrá eliminarlos.

+1

Nunca subestimes las 'OutOfMemoryExceptions' que ocurren en la cabeza del desarrollador. – bzlm

+0

+1 buena analogía –

3

aquí está la información de Microsoft sobre la palabra clave "using" en este contexto: http://msdn.microsoft.com/en-us/library/sf0df423.aspx. básicamente proporciona una alternativa al uso del nombre completo en un ensamblado, pero en realidad no importa ni incluye los ensamblajes en la memoria con esa palabra clave en particular.

Cuestiones relacionadas