Это псевдоним типа, а не имена псевдонима; полезно неоднозначность - например, против:
using WinformTimer = System.Windows.Forms.Timer;
using ThreadingTimer = System.Threading.Timer;
(PS: спасибо за выбор Timer
;-p)
В противном случае, если вы используете оба System.Windows.Forms.Timer
и System.Timers.Timer
в том же файле вы» d должен продолжать давать полные имена (поскольку 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) { }
}
}
Как насчет системной системы 'using int = System.Int32' в C#? Полезно, не так ли? Это то же самое использование, которое можно использовать в других местах. – nawfal
@nawfal Я считаю, что псевдонимы типов не являются экспортируемыми. Это означает, что вы не можете определить что-то вроде 'using int = System.Int32' и использовать его в других местах, кроме объявляющего файла. Таким образом, этот псевдоним 'int' to' Int32' может быть достигнут каким-либо другим способом или является особой вещью в компиляторе/времени выполнения. – KFL
@KFL это правда, но преимущество обоих обеспечивает одно и то же. – nawfal