Où et quand utiliserait-on l'alias d'espace de noms comme
using someOtherName = System.Timers.Timer;
Il me semble que cela ne ferait qu'ajouter à la confusion dans la compréhension de la langue.
c#
namespaces
Brad
la source
la source
using int = System.Int32
du C #? Utile, non? C'est la même utilisation qui peut être mise à profit ailleurs.using int = System.Int32
, et l'utiliser dans des endroits autres que le fichier de déclaration. Donc , ceint
àInt32
alias soit peut être obtenue par d'autres moyens, ou est quelque chose de spécial dans le compilateur / runtime.using int = System.Int32
est à la fois faux et trompeur - c'est faux parce que l'int
alias n'est pas implémenté de la manière que vous avez décrite. C'est trompeur parce que vous impliquez que les alias de type peuvent être utilisés globalement, tout comme commentint
est utiliséInt32
.Réponses:
C'est un alias de type, pas un alias d'espace de noms; il est utile de lever l'ambiguïté - par exemple, contre:
(ps: merci pour le choix de
Timer
;-p)Sinon, si vous utilisez les deux
System.Windows.Forms.Timer
etSystem.Timers.Timer
dans le même fichier, vous devrez continuer à donner les noms complets (car celaTimer
pourrait prêter à confusion).Il joue également un rôle avec les
extern
alias pour l'utilisation de types avec le même nom de type complet à partir de différents assemblys - rare, mais utile à prendre en charge.En fait, je peux voir une autre utilisation: lorsque vous voulez un accès rapide à un type, mais que vous ne voulez pas utiliser un standard
using
parce que vous ne pouvez pas importer des méthodes d'extension en conflit ... un peu alambiqué, mais ... voici un exemple ...la source
System.Timers.Timer
;-pJe l'utilise lorsque j'ai plusieurs espaces de noms avec des sous-espaces de noms et / ou des noms d'objet en conflit, vous pouvez simplement faire quelque chose comme [à titre d'exemple]:
Ce qui devrait autrement être écrit:
Il économise une tonne de saisie et peut être utilisé pour rendre le code beaucoup plus facile à lire.
la source
En plus des exemples mentionnés, les alias de type (plutôt que les alias d'espace de noms) peuvent être utiles pour faire référence à plusieurs reprises à des types génériques:
Contre:
la source
Brièveté.
Il y a des avantages marginaux à fournir de la clarté entre les espaces de noms qui partagent des noms de types, mais essentiellement, ce n'est que du sucre.
la source
Je l'utilise toujours dans des situations comme celle-ci
où
Utility
aurait autrement un contexte différent (commeMyBaseNamespace.MySubNamespace.MySubSubNamespace.Utility
), mais j'attends / je préfèreUtility
toujours pointer vers cette classe particulière.la source
C'est très utile lorsque vous avez plusieurs classes avec le même nom dans plusieurs espaces de noms inclus. Par exemple...
Vous pouvez utiliser des alias pour rendre le compilateur heureux et rendre les choses plus claires pour vous et les autres membres de votre équipe:
la source
Nous avons défini des alias d'espace de noms pour tous nos espaces de noms. Cela permet de voir très facilement d'où vient une classe, par exemple:
et
Nous avons défini quelques directives sur la manière dont les alias doivent être nommés et que tout le monde les utilise.
la source
Je trouve les alias très utiles dans les tests unitaires. Lorsque vous écrivez des tests unitaires, il est courant de déclarer le sujet à tester comme
étant
myClassUT
le sujet U nder T est. Mais que faire si vous voulez écrire des tests unitaires pour une classe statique avec des méthodes statiques? Ensuite, vous pouvez créer un alias comme celui-ci:Ensuite, vous pouvez écrire vos tests unitaires comme ceci:
et vous ne perdez jamais de vue quel est le sujet à tester.
la source
D'une certaine manière, c'est vraiment pratique lors du codage dans Visual Studio.
Cas d'utilisation : disons que je n'utilise que quelques classes, par exemple à
SqlConnection
partir d'un espace de nomsSystem.Data
. En temps normal, j'importerai l'System.Data.SqlClient
espace de noms en haut du fichier * .cs comme indiqué ci-dessous:Maintenant, regardez mon intellisense. Il est fortement proliféré avec un grand nombre de classes parmi lesquelles choisir lors de la saisie dans l'éditeur de code. Je ne vais pas du tout utiliser tout un tas de cours:
Je préférerais donc utiliser un alias en haut de mon fichier * .cs et obtenir une vue intellisense claire:
Maintenant, regardez ma vue intellisense. C'est super clair et super propre.
la source
Une raison que je connais; Il vous permet d'utiliser des noms plus courts lorsque vous avez des conflits de noms à partir d'espaces de noms importés. Exemple:
Si vous avez déclaré
using System.Windows.Forms;
etusing System.Windows.Input;
dans le même fichier lorsque vous accédez à l'accès,ModifierKeys
vous constaterez peut-être que le nom seModifierKeys
trouve à la fois dans les espaces de nomsSystem.Windows.Forms.Control
etSystem.Windows.Input
. Donc , en déclarant queusing Input = System.Windows.Input;
vous pouvez obtenirSystem.Windows.Input.ModifierKeys
viaInput.ModifierKeys
.Je ne suis pas un buff C # mais l'aliasing de l'espace de noms me semble être la "meilleure pratique". De cette façon, vous savez ce que vous obtenez et vous n'avez toujours pas à taper trop.
la source
Vous pouvez les utiliser pour modifier un code très facilement.
Par exemple:
Par le simple changement de la directive, vous pouvez décider si tout votre code fonctionne dans
float
oudouble
.la source