5

当您的项目不使用命名空间时,有没有办法告诉编译器使用静态类型而不是变量?

例如,我有一个名为 User 的类,其中包含各种静态和非静态方法。假设其中一个静态方法被调用GetUser()

我正在尝试User.GetUser()从一个在范围内也有一个变量(从基类继承)的方法调用该方法,该变量名为 User。但是,编译器抱怨说它找不到User.GetUser(),因为它认为我指的是范围内的用户变量。

如果这个项目使用命名空间,我可以这样做ns1.User.GetUser(),但在这种情况下这是不可行的。有没有办法告诉编译器我指的是User类型而不是User变量?

4

4 回答 4

9

您可以使用:

global::User.GetUser()

或者一个 using 指令来别名类型:

using UserType = User;

...

UserType.GetUser();

我强烈建议您使用命名空间:)

于 2013-01-14T18:48:29.910 回答
6

你会写global::User.GetUser()吗?

全球

于 2013-01-14T18:49:24.090 回答
4
  1. 使用global::User.GetUser().

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

  3. 重命名变量。

  4. 重命名类型。

  5. 缩小变量的范围,使其不再在您使用它的范围内。

于 2013-01-14T18:49:55.047 回答
2

或者,您可以为静态类使用别名。在您的using指令中,您可以添加:

using StaticUser = User;

那么就不会再有歧义了。

于 2013-01-14T18:50:32.363 回答