Это псевдоним типа, а не псевдоним пространства имен; это полезно для устранения неоднозначности - например, против:
using WinformTimer = System.Windows.Forms.Timer;
using ThreadingTimer = System.Threading.Timer;
(ps: спасибо за выбор Timer
;-p)
В противном случае, если вы используете System.Windows.Forms.Timer
и System.Timers.Timer
в одном и том же файле, вам придется продолжать давать полные имена (поскольку Timer
может сбить с толку).
Он также играет роль с псевдонимами extern
для использования типов с одинаковым полным именем типа из разных сборок - редко, но полезно для поддержки.
На самом деле, я вижу другое применение: когда вы хотите быстрый доступ к типу, но не хотите использовать обычный using
, потому что вы не можете импортировать некоторые конфликтующие методы расширения ... немного запутанно, но ... вот пример ...
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) { }
}
}