2013-01-14 19 views
6

C'è un modo per dire al compilatore di usare un tipo statico invece di una variabile quando il tuo progetto non usa gli spazi dei nomi?Usa il tipo statico invece della variabile

Per esempio, ho una classe chiamata Utente con vari metodi statici e non statici. Diciamo che uno dei metodi statici è chiamato GetUser().

Sto provando a chiamare il metodo User.GetUser() da un metodo che ha anche una variabile in ambito (ereditata dalla classe base) chiamata Utente. Tuttavia, il compilatore si lamenta dicendo che non può trovare User.GetUser() perché pensa che mi riferisco alla variabile User che è in ambito.

Se questo progetto utilizzava spazi dei nomi, potevo semplicemente eseguire ns1.User.GetUser(), ma in questo caso non è possibile. C'è un modo che posso dire al compilatore che mi riferisco al tipo User invece della variabile User?

+1

... È possibile rinominare la variabile? In genere raccomando di non usare nomi di variabili in maiuscolo. Ecco perché. – FrankieTheKneeMan

risposta

9

È possibile utilizzare:

global::User.GetUser() 

o una direttiva utilizzando un alias per il tipo:

using UserType = User; 

... 

UserType.GetUser(); 

avrei vivamente di utilizzare gli spazi dei nomi però :)

+0

Brillante! Grazie mille. – itsme86

6

si può scrivere global::User.GetUser()?

Vedi global

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

  2. utilizzare un alias: using UserClass = User;

  3. Rinominare il variabile.

  4. Rinomina il tipo.

  5. Ridurre l'ambito della variabile in modo che non sia più in ambito in cui lo si sta utilizzando.

2

In alternativa, è possibile utilizzare un alias per la classe statica. Nei tuoi using direttive, è possibile aggiungere:

using StaticUser = User; 

Poi ci sarebbe più ambiguità.

Problemi correlati