使用静态类型而不是变量

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

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

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

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

您可以使用:

 global::User.GetUser() 

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

 using UserType = User; ... UserType.GetUser(); 

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

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

见全球

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

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

  3. 重命名变量。

  4. 重命名类型。

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

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

 using StaticUser = User; 

然后就不会有歧义了。