, dass ein Typ alias ist, kein Namespace alias; es ist sinnvoll, eindeutig zu machen - zum Beispiel gegen:
using WinformTimer = System.Windows.Forms.Timer;
using ThreadingTimer = System.Threading.Timer;
(ps: danke für die Wahl von Timer
;-P)
Andernfalls, wenn Sie Ihnen beide System.Windows.Forms.Timer
und System.Timers.Timer
in der gleichen Datei verwenden‘ d muss immer die vollständigen Namen angeben (da Timer
könnte verwirrend sein).
Es spielt auch eine Rolle mit extern
Aliase für die Verwendung von Typen mit dem gleichen voll qualifizierten Typnamen aus verschiedenen Baugruppen - selten, aber nützlich, um unterstützt zu werden.
Eigentlich kann ich eine andere Verwendung finden: Wenn Sie einen schnellen Zugriff auf eine Art wollen, aber nicht wollen, dass eine regelmäßige using
verwenden, da Sie nicht einige widersprüchliche Erweiterungsmethoden importieren kann ... ein wenig verworren , aber ... hier ist ein Beispiel ...
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) { }
}
}
Wie wäre es mit einem systemweiten 'using int = System.Int32' in C#? Nützlich, oder? Es ist die gleiche Verwendung, die anderswo genutzt werden kann. – nawfal
@nawfal Ich glaube, Typ-Aliase sind nicht exportierbar. Das bedeutet, dass Sie etwas wie 'using int = System.Int32' nicht definieren können und es an anderen Stellen als der deklarierenden Datei verwenden können. Also kann dieser "int" zu "Int32" Alias entweder durch andere Mittel erreicht werden oder ist eine spezielle Sache im Compiler/Runtime. – KFL
@ KFL, das ist wahr, aber der Vorteil, den beide bieten, ist von der gleichen Natur. – nawfal