Dans cette dernière version, les directives using s'appliquent uniquement dans la déclaration d'espace de noms.
Dans la plupart des cas, vous aurez seulement une seule déclaration d'espace de noms:
// Using directives
...
namespace X
{
// Maybe more using directives
// Code
}
// End of file
La principale différence est que si vous avez plusieurs espaces de noms dans le même fichier:
// Using directives
...
namespace X
{
// Maybe more using directives
// Code
}
namespace Y
{
// Maybe more using directives
// Code
}
// End of file
Dans ce cas, l'utilisation de Les directives de la déclaration X de l'espace de noms n'affectent pas le code dans la déclaration Y de l'espace de noms, et vice versa.
Cependant, ce n'est pas la seule différence: il existe un subtle case which Eric Lippert points out où il peut affecter le code même avec une seule déclaration d'espace de nom. (Fondamentalement, si vous écrivez using Foo;
dans la déclaration X de l'espace de noms, et qu'il y a un espace de noms X.Foo
ainsi que Foo
, le comportement change, ce qui peut être corrigé en utilisant un alias d'espace de noms, par exemple using global::Foo;
si vous le voulez vraiment.)
Personnellement je bâton à:
- Une déclaration namespace par fichier (et le plus souvent d'un type de niveau supérieur par fichier)
- Utilisation des directives en dehors de la déclaration d'espace de noms
Cela ressemble à une question en double. S'il vous plaît voir excellente réponse pour "[usings être à l'intérieur ou doit-dehors de l'espace de noms] [1]" [1]: http://stackoverflow.com/questions/125319/should-usings-be-inside- ou-outside-the-namespace – tsemer