Onde ou quando alguém usaria alias de namespace, como
using someOtherName = System.Timers.Timer;
Parece-me que apenas adicionaria mais confusão para a compreensão da linguagem.
c#
namespaces
Brad
fonte
fonte
using int = System.Int32
em C #? Útil, não é? É o mesmo uso que pode ser aproveitado em outro lugar.using int = System.Int32
e usá-lo em outros lugares além do arquivo de declaração. Portanto, esteint
aInt32
apelido tanto pode ser alcançado por outros meios, ou é uma coisa especial no compilador / runtime.using int = System.Int32
está errado e enganoso - está errado porque oint
alias não foi implementado da maneira que você descreveu. É enganoso porque você sugere que os aliases de tipo podem ser usados globalmente, assim como o modo comoint
é usadoInt32
.Respostas:
Esse é um alias de tipo, não um alias de namespace; é útil eliminar a ambigüidade - por exemplo, contra:
(ps: obrigado pela escolha de
Timer
;-p)Caso contrário, se você usar ambos
System.Windows.Forms.Timer
eSystem.Timers.Timer
no mesmo arquivo, terá que continuar fornecendo os nomes completos (poisTimer
pode ser confuso).Ele também desempenha um papel com
extern
aliases para usar tipos com o mesmo nome de tipo totalmente qualificado de diferentes assemblies - raro, mas útil para ter suporte.Na verdade, posso ver outro uso: quando você quer acesso rápido a um tipo, mas não quer usar um regular
using
porque você não pode importar alguns métodos de extensão conflitantes ... um pouco complicado, mas ... aqui está um exemplo ...fonte
System.Timers.Timer
;-pEu o uso quando tenho vários namespaces com sub namespaces e / ou nomes de objeto conflitantes, você poderia apenas fazer algo como [por exemplo]:
O que de outra forma teria que ser escrito:
Ele economiza uma tonelada de digitação e pode ser usado para tornar o código muito mais fácil de ler.
fonte
Além dos exemplos mencionados, aliases de tipo (em vez de aliases de namespace) podem ser úteis ao se referir repetidamente a tipos genéricos:
Versus:
fonte
Brevidade.
Existem benefícios adicionais para fornecer clareza entre namespaces que compartilham nomes de tipo, mas essencialmente é apenas açúcar.
fonte
Eu sempre uso em situações como esta
onde
Utility
, de outra forma, teria um contexto diferente (comoMyBaseNamespace.MySubNamespace.MySubSubNamespace.Utility
), mas espero / prefiroUtility
sempre apontar para essa classe específica.fonte
É muito útil quando você tem várias classes com o mesmo nome em vários namespaces incluídos. Por exemplo...
Você pode usar aliases para deixar o compilador feliz e tornar as coisas mais claras para você e outras pessoas de sua equipe:
fonte
Definimos aliases de namespace para todos os nossos namespaces. Isso torna muito fácil ver de onde vem uma aula, por exemplo:
e
Definimos algumas diretrizes sobre como os apelidos devem ser nomeados e todos os estão usando.
fonte
Acho os aliases muito úteis em testes de unidade. Quando você está escrevendo testes de unidade, é uma prática comum declarar o assunto a ser testado como
sendo
myClassUT
o assunto U nder T est. Mas e se você quiser escrever testes de unidade para uma classe estática com métodos estáticos? Então você pode criar um alias como este:Então você pode escrever seus testes de unidade assim:
e você nunca perde de vista o que é o assunto em teste.
fonte
De certa forma, é muito útil ao codificar no Visual Studio.
Caso de uso : digamos que eu precise usar apenas algumas classes, por exemplo,
SqlConnection
de um namespaceSystem.Data
. No curso normal, importarei oSystem.Data.SqlClient
namespace na parte superior do arquivo * .cs conforme mostrado abaixo:Agora olhe para o meu intelecto. É fortemente proliferado com muitas classes para escolher enquanto digita no editor de código. Não vou usar um monte de classes:
Portanto, prefiro usar um alias na parte superior do meu arquivo * .cs e obter uma visão clara do intellisense:
Agora olhe para a minha visão do intellisense. É super-claro e super-limpo.
fonte
Uma razão eu sei; Ele permite que você use nomes mais curtos quando houver conflitos de nomes de namespaces importados. Exemplo:
Se você declarou
using System.Windows.Forms;
e estáusing System.Windows.Input;
no mesmo arquivo ao acessar,ModifierKeys
poderá descobrir que o nomeModifierKeys
está nos namespacesSystem.Windows.Forms.Control
eSystem.Windows.Input
. Então, ao declarar,using Input = System.Windows.Input;
você pode obterSystem.Windows.Input.ModifierKeys
viaInput.ModifierKeys
.Não sou um aficionado por C #, mas criar aliases de namespace parece ser a "melhor prática" para mim. Dessa forma, você sabe o que está recebendo e ainda não precisa digitar muito mais.
fonte
Você pode usá-los para modificar um código com muita facilidade.
Por exemplo:
Pela simples mudança na diretiva, você pode decidir se todo o seu código funciona em
float
oudouble
.fonte