2010-09-22 9 views
6

ich etwas lockig Frage ..
I Alias ​​für die Klasse an der Spitze meiner Dokument, wieAlias ​​für Klassennamen in der Methode

using MyName = Bla.Bla.ClassName

Aber kann ich definieren, so etwas in die definieren Methode? Kein

+0

Möchten Sie die gleiche Syntax innerhalb einer Methode schreiben? –

+0

Syntax kann andere sein. Der Hauptgrund ist die Verwendung der Klasse ClassName aus dem Namespace Bla.Bla in Kurzform (Ohne Namespace in der Methode.) – Yuriy

Antwort

6

Nein, das geht nicht. Wenn Sie meinen, dass Sie innerhalb einer Methode einen Klassenaliasnamen definieren möchten, ist dies nicht möglich.

Alias ​​nur auf Datei oder Namespace-Ebene definiert werden könnten:

using MyName = Bla.Bla.ClassName; 
namespace A{ 
... 
} 

oder

namespace A{ 
    using MyName = Bla.Bla.ClassName 
... 
} 

Wenn Sie stattdessen bedeuten Sie eine „Methode alias“ definieren möchten, ist dies auch nicht möglich : Alias ​​sind nur für Typen oder Namespaces.

5

, using Richtlinien müssen entweder außerhalb einer Erklärung sein, oder innerhalb eines Namespace-Deklaration:

using Foo; 
namespace Bar 
{ 
    using Baz; 
} 

Sie können dies innerhalb einer Methode nicht. Warum nicht einfach für die ganze Klasse? Warum willst du nur wollen es innerhalb einer bestimmten Methode anwenden?

+2

Ich habe eine generische auf zwei Typparameter (die Entweder Monade). Meine Methoden haben mehrere verschiedene Verzweigungen, von denen jeder ein "new Entweder (z)" zurückgibt. Die inneren Werte von Entweder sind schreibgeschützt, also muss ich ohne Alias ​​jedes Mal "" eingeben, wenn ich diesen Typ referenzieren möchte. Die Parametertypen "x" und "y" hängen davon ab, in welcher Methode ich bin, und haben normalerweise lange Namen; das "Entweder " nimmt in einigen Fällen mehr als 60 Zeichen auf. Es wäre nützlich, zu Beginn der Methode zu sagen, entweder "entweder " und dann "return new entweder (z)" zu verwenden, um Unordnung zu reduzieren. – barron