2013-01-14 12 views
6

Czy jest jakiś sposób, aby kompilator mógł użyć typu statycznego zamiast zmiennej, gdy projekt nie używa przestrzeni nazw?Użyj typu statycznego zamiast zmiennej

Na przykład mam klasę o nazwie Użytkownik z różnymi metodami statycznymi i niestatycznymi. Powiedzmy, że jedna ze statycznych metod nazywa się GetUser().

Próbuję wywołać tę metodę User.GetUser() z metody, która ma również zmienną w zakresie (odziedziczone z klasy bazowej) o nazwie Użytkownik. Jednak kompilator skarży się, że nie może znaleźć User.GetUser(), ponieważ uważa, że ​​mam na myśli zmienną użytkownika, która jest w zakresie.

Jeśli ten projekt używał przestrzeni nazw, mógłbym po prostu zrobić ns1.User.GetUser(), ale nie jest to możliwe w tym przypadku. Czy istnieje sposób, że mogę powiedzieć kompilatorowi, że mam na myśli typ User zamiast zmiennej User?

+1

... Czy możesz zmienić nazwę swojej zmiennej? Ogólnie zalecam, aby nie używać nazw zmiennych pisanych wielką literą. Dlatego. – FrankieTheKneeMan

Odpowiedz

9

Można użyć:

global::User.GetUser() 

lub za pomocą dyrektywy do aliasu typ:

using UserType = User; 

... 

UserType.GetUser(); 

bym gorąco zachęcamy do korzystania z przestrzeni nazw chociaż :)

+0

Genialny! Dziękuję Ci bardzo. – itsme86

6

można napisać global::User.GetUser()?

Zobacz global

4
  1. Zastosowanie global::User.GetUser().

  2. Zastosowanie aliasem: using UserClass = User;

  3. Zmień nazwę zmiennej.

  4. Zmień nazwę typu.

  5. Ogranicz zakres zmiennej, tak aby nie znajdował się już w zasięgu, w którym jest używany.

2

Alternatywnie, można użyć aliasu dla klasy statycznej. W swoich dyrektywach using, można dodać:

using StaticUser = User; 

Wtedy nie byłoby bardziej dwuznaczność.

Powiązane problemy