Eso es un alias de tipo, no un alias de espacio de nombres; es útil para eliminar la ambigüedad - por ejemplo, contra:
using WinformTimer = System.Windows.Forms.Timer;
using ThreadingTimer = System.Threading.Timer;
(ps: gracias por la elección de Timer
;-P)
De lo contrario, si se utiliza tanto System.Windows.Forms.Timer
y System.Timers.Timer
en el mismo archivo que' Debería seguir dando los nombres completos (ya que Timer
podría ser confuso).
También forma parte de los alias extern
para el uso de tipos con el mismo nombre de tipo completo de diferentes ensamblajes, raros pero útiles para ser compatibles.
En realidad, puedo ver otro uso: cuando se desea un acceso rápido a un tipo, pero no quiero utilizar un habitual using
porque no se puede importar algunos métodos de extensión en conflicto ... un poco complicado , pero ... he aquí un ejemplo ...
namespace RealCode {
//using Foo; // can't use this - it breaks DoSomething
using Handy = Foo.Handy;
using Bar;
static class Program {
static void Main() {
Handy h = new Handy(); // prove available
string test = "abc";
test.DoSomething(); // prove available
}
}
}
namespace Foo {
static class TypeOne {
public static void DoSomething(this string value) { }
}
class Handy {}
}
namespace Bar {
static class TypeTwo {
public static void DoSomething(this string value) { }
}
}
¿Qué tal un sistema de ancho 'using int = System.Int32' en C#? Útil, ¿no? Es el mismo uso que se puede aprovechar en otros lugares. – nawfal
@nawfal Creo que los alias de tipo no son exportables. Lo que significa que no puede definir algo como 'using int = System.Int32', y usarlo en lugares que no sean el archivo de declaración. Por lo tanto, este alias 'int' a' Int32' puede lograrse de alguna otra manera o es algo especial en el compilador/tiempo de ejecución. – KFL
@KFL eso es cierto, pero el beneficio que ofrecen es de la misma naturaleza. – nawfal