2017-02-27 2 views
0

Ich habe einen Typ durch Kurzsynonym benannt. In nächster Zeile versuche ich über seine neue Kurznamen diese Art zu verwenden, irgendwie (egal):Verwendung des Typs Synonym verursacht CS0246 Der Typ oder Namespacename ... konnte nicht gefunden werden

using A = SomeTypeName; 
using B = A; 

Aber in Zeile 2 die Compiler den Namen nicht sehen „A“ & erzeugt die Fehler (siehe im Titel). Warum?

+2

Weil es nicht erlaubt ist. Überprüfen Sie die Dokumentation: https://msdn.microsoft.com/en-us/library/aa664765(v=vs.71).aspx - siehe das vorletzte Beispiel für ein Beispiel, warum die Verwendung eines Namespace/Typ-Alias funktioniert nicht als Teil eines anderen Alias. Der Wortlaut ist ein wenig verwirrend, aber es besagt im Grunde genommen, dass der Compiler versucht, den Typ/Namespace A aufzulösen, ohne zuvor definierte Aliase in derselben Kompilierungseinheit anzuwenden. – PaulF

Antwort

2

ECMA-334 9.4.1 Verwendung von Alias-Richtlinien sagen:

Die Reihenfolge, in der Alias-using-Direktiven geschrieben hat keine Bedeutung, und die Auflösung des Namespace-oder-Typnamen referenzierte von einer using-Alias-Direktive wird nicht durch die using-alias-Direktive selbst oder durch andere using-Direktiven in der sofort enthält Compilierungseinheit oder Namespace-Rumpf. In anderen Wörtern ist der Namespace-oder-Typ-Name einer Alias-Using-Anweisung aufgelöst , als ob die sofort enthaltende Kompilierungseinheit oder Namespace-Körper keine using-Direktiven hatte. Eine using-alias-Direktive kann jedoch von extern-alias-Direktiven in der enthaltenden Kompilierungseinheit oder dem Namespace-Body von betroffen sein.

Verwandte Themen