4 votes

est "utiliser un espace de nom" signifie charger des types entiers sous cet espace de nom.

Disons que j'ai un code

using System;
using System.Windows.Forms;

class TestApp
{
   static void Main()
   {
     Console.WriteLine("Testing! 1, 2, 3");
     MessageBox.Show("Hello...");
   }
}

le using System & System.Windows.Forms signifie charger tous les types (dans ces espaces de noms) au moment de l'exécution, bien que je n'utilise que l'impression sur la console et l'affichage d'une boîte de messages ?

et la mémoire sera-t-elle consommée pour charger les types requis ( Console & MessageBox ) au moment de l'exécution...

[et il y aura un certain bloc de code (dans le cadre de Console ) encore inutilisé par le code source mais sera-t-il quand même chargé ? ]

donc tout indice sur ce qui se passe dans les coulisses (au moins pour les 10 lignes de code ci-dessus) serait utile....

7voto

Joachim Isaksson Points 85969

using ne sont que des instructions de compilation permettant au compilateur de trouver les types référencés sans avoir à spécifier le nom pleinement qualifié à chaque utilisation. pas faire en sorte que n'importe quel élément soit chargé au moment de l'exécution, alors qu'il ne le serait pas s'il faisait directement référence au même type.

0voto

MrFox Points 1492

Oui, tous les types directement dans l'espace de nom, donc rien des sous-espaces de nom. Cela signifie que le fait d'avoir de nombreuses utilisations augmente le temps de compilation*. Mais cela n'a aucun effet sur le temps d'exécution, car à ce moment-là, il n'y a plus d'utilisations et chaque utilisation de l'espace de noms a été convertie en une référence directe au type.

*Il s'agit de la partie où il est indiqué "chargement des symboles", ce qui n'est pas toujours le cas. Ainsi, dans mon travail, la grande solution prend 30 secondes pour charger tous les symboles, mais la plupart des compilations sont très rapides parce qu'il n'est pas nécessaire de recharger les symboles.

modifier @xCoder : Cela a à voir avec la façon dont l'assemblage fonctionne, il n'y a pas de classes, juste des données. Ainsi, les classes que vous utilisez le langage de plus haut niveau chacun compiler en code d'assemblage différente parce que la classe gère les données différemment. C# utilise IL au lieu de l'assemblage et je ne suis pas sûr, mais cela fonctionne probablement de la même manière.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X