使用静态类型而不是变量

时间:2013-01-14 18:46:55

标签: c#

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

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

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

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

4 个答案:

答案 0 :(得分:9)

您可以使用:

global::User.GetUser()

或者使用using指令来替换类型:

using UserType = User;

...

UserType.GetUser();

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

答案 1 :(得分:6)

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

请参阅global

答案 2 :(得分:4)

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

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

  3. 重命名变量。

  4. 重命名类型。

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

答案 3 :(得分:2)

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

using StaticUser = User;

然后就不会有歧义了。