2010-09-22 10 views
6

mam trochę kręcone pytanie ..
mogę zdefiniować alias dla klasy na szczycie mojej dokument, taki jakalias dla nazwy klasy w metodzie

using MyName = Bla.Bla.ClassName

Ale mogę określić coś takiego w metoda?

+0

Czy chcesz zapisać tę samą składnię w metodzie? –

+0

Składnia może być inna. Głównym powodem jest użycie klasy ClassName z przestrzeni nazw Bla.Bla w formie skróconej (bez przestrzeni nazw w metodzie.) – Yuriy

Odpowiedz

6

Nie, nie możesz. Jeśli chcesz zdefiniować alias klasy wewnątrz metody, nie jest to możliwe.

Alias ​​może być zdefiniowana tylko na poziomie pliku lub przestrzeni nazw:

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

lub

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

Jeśli zamiast oznaczać chcesz zdefiniować alias „metoda”, to również nie jest możliwe : alias dotyczy tylko typów lub przestrzeni nazw.

5

Nie, using dyrektywy muszą być albo poza jakimkolwiek oświadczeniem, lub w deklaracji przestrzeni nazw:

using Foo; 
namespace Bar 
{ 
    using Baz; 
} 

Nie można tego zrobić w metodzie. A może po prostu zrobić to dla całej klasy? Dlaczego chcesz chcesz zastosować w ramach konkretnej metody?

+2

Mam typic na dwóch parametrach typu (monada). Moje metody mają kilka różnych gałęzi powrotnych, z których każda zwraca "nowy Albo (z)". Wewnętrzne wartości albo są tylko do odczytu, więc bez aliasu muszę wpisać "albo " za każdym razem, gdy chcę odwołać się do tego typu. Typy parametrów "x" i "y" zależą od tego, w której postaci się znajduję i zazwyczaj mają długie nazwy; "Albo " w niektórych przypadkach zajmuje ponad 60 znaków. Na początku metody warto powiedzieć "używając albo = albo ", a następnie "zwrócić nowy albo (z)", aby zmniejszyć bałagan. – barron