当命名空间不明确时使用特定的类

Posted

技术标签:

【中文标题】当命名空间不明确时使用特定的类【英文标题】:Using a specific class when there is a namespace ambiguity 【发布时间】:2019-03-18 17:15:18 【问题描述】:

我有一个名为Message 的课程。它位于MyProgram 命名空间内。问题是System.Windows.Forms还有一个Message类,所以每当我想使用这两个命名空间中的类时,我都需要写MyProgram.Message来引用我的类,这很繁琐。

我希望这条线可以工作:

using static Message = MyProgram.Message;

但我收到以下错误:

“使用静态”指令不能用于声明别名

有没有办法强制代码将Message 识别为MyProgram.Message?此外,更改班级名称也不是真正的解决方案。 :P

【问题讨论】:

延伸阅读:docs.microsoft.com/en-us/dotnet/csharp/language-reference/… 将代码放入 MyProgram 命名空间,使其默认为当前命名空间。问题是您位于不同的命名空间中。 【参考方案1】:

using static 用于静态成员,而不是嵌套类型。

常规的using 指令可以正常工作。

using Message = MyProgram.Message;

【讨论】:

是的。 using static MyType; 表示在访问该类型的static 成员时可以跳过MyType,因此您可以只写SomeStaticMember 而不是MyType.SomeStaticMember。由于MyType 完全消失了,因此在此处提供别名是没有意义的。为此,您使用没有static 关键字的using 指令(不是“语句”)。您上面的解决方案仍然取决于 using 指令的位置。如果using System.Windows.Forms; 在某个namespace 内部,而您的using Message = MyProgram.Message; 在外部,则可能会使用前一个“nearer”指令。

以上是关于当命名空间不明确时使用特定的类的主要内容,如果未能解决你的问题,请参考以下文章

升级项目时发现错误:操作符“=”不明确且“ios”:不是类或命名空间名称

命名空间的使用

关于TypeScript命名空间

TypeScript(18): 命名空间

如何在 Kubernetes 中切换命名空间

内联命名空间中对命名空间的不明确引用