2010-09-22 18 views
6

J'ai une question bouclée ..
je peux définir alias pour la classe en haut de mon document, tel queAlias ​​pour le nom de classe dans la méthode

using MyName = Bla.Bla.ClassName

Mais puis-je définir quelque chose comme ça dans la méthode?

+0

Voulez-vous écrire la même syntaxe dans une méthode? –

+0

La syntaxe peut être autre. La raison principale est d'utiliser la classe ClassName de l'espace de noms Bla.Bla sous forme abrégée (Sans espace de noms dans la méthode.) – Yuriy

Répondre

6

Non, vous ne pouvez pas. Si vous voulez dire que vous voulez définir un alias de classe dans une méthode, ce n'est pas possible.

Alias ​​peuvent être définis uniquement au niveau fichier ou espace de noms:

using MyName = Bla.Bla.ClassName; 
namespace A{ 
... 
} 

ou

namespace A{ 
    using MyName = Bla.Bla.ClassName 
... 
} 

Si vous voulez dire au lieu que vous souhaitez définir un « alias de méthode », c'est pas possible : les alias sont uniquement pour les types ou les espaces de noms.

5

Non, using directives doivent être soit en dehors de toute déclaration ou dans une déclaration d'espace de noms:

using Foo; 
namespace Bar 
{ 
    using Baz; 
} 

Vous ne pouvez pas le faire dans une méthode. Pourquoi ne pas le faire pour toute la classe? Pourquoi voulez-vous seulement voulez-vous appliquer dans une méthode particulière?

+2

J'ai un générique sur deux types de paramètres (l'un ou l'autre Monad). Mes méthodes ont plusieurs branches de retour différentes, dont chacune retourne un "nouveau Either (z)". Les valeurs internes de Either sont en lecture seule, donc sans alias je dois taper "Soit " chaque fois que je veux faire référence à ce type. Les types de paramètres "x" et "y" dépendent de la méthode dans laquelle je suis et ont généralement des noms longs; le "" prend dans certains cas plus de 60 caractères. Il serait utile de dire, au début de la méthode, "en utilisant soit = ​​" puis "return new (z)" pour réduire l'encombrement. – barron