当项目不使用命名空间时,有没有办法告诉编译器使用静态类型而不是变量?
例如,我有一个名为User的类,它有各种静态和非静态方法。假设其中一个静态方法称为GetUser()
。
我正在尝试从一个方法中调用User.GetUser()
方法,该方法也有一个名为User的范围变量(从基类继承)。但是,编译器抱怨说找不到User.GetUser()
,因为它认为我指的是范围内的User变量。
如果这个项目使用名称空间,我可以做ns1.User.GetUser()
,但在这种情况下这是不可行的。有没有办法让我告诉编译器我指的是User
类型而不是User
变量?
答案 0 :(得分:9)
您可以使用:
global::User.GetUser()
或者使用using指令来替换类型:
using UserType = User;
...
UserType.GetUser();
我强烈建议您使用命名空间:)
答案 1 :(得分:6)
你能写global::User.GetUser()
吗?
请参阅global
答案 2 :(得分:4)
使用global::User.GetUser()
。
使用别名:using UserClass = User;
重命名变量。
重命名类型。
缩小变量的范围,使其不再在您使用变量的范围内。
答案 3 :(得分:2)
或者,您可以为静态类使用别名。在using
指令中,您可以添加:
using StaticUser = User;
然后就不会有歧义了。