gpt4 book ai didi

.net - vb.net 系统命名空间与同级命名空间冲突

转载 作者:行者123 更新时间:2023-12-04 16:56:33 26 4
gpt4 key购买 nike

我有一个类EventArgs(Of T)在我的解决方案中。
这个类位于命名空间 Acme.Infrastructure.Interface .
同名类 EventArgs存在于 System命名空间。

在我的解决方案的另一个项目中,我有一个类 Acme.BusinessModules.MyModule.MyClass尝试使用 EventArgs 时class 我必须完全限定类名,否则编译器认为我正在使用 System.EventArgs类(class)。

我对命名空间解析的理解是编译器首先会在当前命名空间中查找类,然后是它的父类。似乎编译器检查了 System在它检查同级命名空间之前。
System是否正确在 sibling 之前检查?还是这种行为是由其他问题引起的(进口订单?)?

最佳答案

查看涉及的命名空间:

  • Acme.BusinessModules.MyModule
  • Acme.Infrastructure.Interface

  • 编译器没有理由查看 Acme.Infrastructure.InterfaceAcme.BusinessModules.MyModule 中编译类时.现在,如果您编写的代码在(比如说) Acme.Infrastructure.Interface.SomethingElse 中那么那将是另一回事 - 但在这里看起来编译器正在做绝对正确的事情。两个命名空间都以 Acme 开头的事实不在这里也不在那里。

    正如你自己所说:

    My understanding of namespace resolution was that the compiler would first look for the class in the current namespace, and then its parents.



    这里的祖先命名空间是 Acme.BusinessModulesAcme - 不是 Acme.Infrastructure.Interface .

    我还强烈建议您不要创建与 System 中的类名冲突的类名。 .这真的只是自找麻烦。

    关于.net - vb.net 系统命名空间与同级命名空间冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8155976/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com