2012-07-09 15 views
5

¿Hay alguna diferencia en el rendimiento entre importar un espacio de nombres completo versus usar aliasing para importar solo una clase? Si es así, ¿qué diferencia hay?Rendimiento entre la importación de espacio de nombres completo en comparación con el uso de alias en C#?


Ejemplos:

Importación de todo un espacio de nombres:

using System.Reflection; 

Aliasing para importar una sola clase:

using BindingFlags = System.Reflection.BindingFlags; 

EDIT: Un poco de explicación de por qué su respuesta es la forma en que sería muy apreciada ... en otras palabras, algo más que solo una respuesta sí/no por favor. Y tal vez algo respaldado por alguna fuente autorizada también?

+0

posible duplicado de [does 'using' proporciona alguna ventaja?] (Http://stackoverflow.com/questions/3911141/does-using-provide-any-advantages) – mbeckish

+2

Un alias debe causar menos desorden que ImpediDense , eh, IntelliSense. – HABO

Respuesta

9

Zero. Las importaciones del espacio de nombres son una característica en tiempo de compilación y la IL generada será exactamente la misma en ambos sentidos.

+0

¿Qué sucede en el tiempo de ejecución cuando se deben cargar los ensamblajes? ¿No se cargarían solo las clases especificadas y no todas las clases en un espacio de nombres completo? – bsara

+0

@Brandon Las implicaciones de rendimiento están en agregar el .dll como referencia al proyecto. Agregar una instrucción 'using' no tiene efecto en lo que se carga o no de esos archivos. – Servy

+0

@Brandon: Este es un aspecto completamente diferente. Las importaciones del espacio de nombres son simplemente ahorradoras de tiempo/mejoras de legibilidad para el código fuente, el código resultante es exactamente el mismo que si hubiera escrito cosas como System.Collections.Generic.List (por ejemplo). La carga de conjunto y la resolución de tipo no están directamente relacionadas con las importaciones de espacios de nombres. – Alan

4

No, es solo una ayuda para el programador, el CIL generado por el compilador es exactamente el mismo.

+0

No se genera CIL para ninguno, ¿o sí? ¿Qué contendría? Es una directiva en tiempo de compilación –

+0

@KierenJohnstone: Por supuesto, quise decir que el CIL generado para todo el programa es el mismo. – BlackBear

3

No hay diferencia en el rendimiento. Uno dice 'mira aquí cuando especifique un nombre de clase, podría estar aquí'. El otro dice 'cuando digo esta clase o espacio de nombres, me refiero a usar este'.

-1

No, pero aún más amplio. Cargas el dll que contiene el núcleo .net y tendrá docenas de espacios de nombres en él. Realmente no te importa si importas espacios de nombres hasta que salgas del dll ya cargado.

Cuestiones relacionadas