2013-01-14 39 views
6

有沒有什麼辦法可以告訴編譯器在項目不使用名稱空間時使用靜態類型而不是變量?使用靜態類型而不是變量

例如,我有一個名爲User的類,有各種靜態和非靜態方法。假設其中一種靜態方法叫做GetUser()

我想從一個方法中調用User.GetUser()方法,該方法也有一個名爲User的作用域(繼承自基類)的變量。但是,編譯器抱怨說它找不到User.GetUser(),因爲它認爲我指的是範圍內的User變量。

如果這個項目使用命名空間,我可以做ns1.User.GetUser(),但在這種情況下這是不可行的。有沒有辦法告訴編譯器我指的是User類型而不是User變量?

+1

...你可以重命名你的變量嗎?我通常建議不要使用大寫的變量名稱。這就是爲什麼。 – FrankieTheKneeMan

回答

9

您可以使用:

global::User.GetUser() 

或者一個使用指令別名類型:

using UserType = User; 

... 

UserType.GetUser(); 

我強烈建議你雖然:)

+0

太棒了!非常感謝你。 – itsme86

6

你可以寫信給使用命名空間global::User.GetUser()

global

4
  1. 使用global::User.GetUser()

  2. 使用別名:using UserClass = User;

  3. 重命名變量。

  4. 重命名該類型。

  5. 縮小變量的範圍,使其不在您使用它的範圍內。

2

或者,您可以爲您的靜態類使用別名。在你using指令,你可以添加:

using StaticUser = User; 

然後就沒有更多的不確定性。