首页 > 解决方案 > 在 C# 中,当您只提供命名空间中的最后一个“单词”时,引用类如何工作?

问题描述

using A.B;
using X.Y;

public void Get(B.C c) {

}

这种导入机制如何在 C# 中工作?(方法上的BC)。我在哪里可以找到有关它的一些文档?

当我尝试以这种方式导入其他包时,它不起作用......

如果我去“B”,骑手。我得到一堆代码洞察选项......(AB是我的代码)但如果我输入“Y”。我没有得到任何选项(XY)是库代码。似乎代码洞察力在包含我的代码的命名空间中起作用。

更新了使用 using 而不是 import 的问题。

标签: c#

解决方案


命名空间和类型名称

namespace_or_type_name具有以下四种形式之一:

  • I
  • I<A1, ..., Ak>
  • N.I
  • N.I<A1, ..., Ak>

然后1

对于每个命名空间 N,从出现 namespace_or_type_name 的命名空间开始继续每个封闭的命名空间(如果有),并以全局命名空间结束,评估以下步骤,直到找到一个实体:

...

否则,如果N包含具有名称的可访问类型I ...否则,namespace_or_type_name指的是使用给定类型参数构造的类型。

因此,如果您的代码在 namespace中,并且nor中A.Q.R没有B命名空间,那么最终它将解析为. (注意,这里不相关)RQA.B.Cusing A.B;


1我试图在这里删除许多与此案例无关的警告,但实际上,您确实需要查看完整的规范以获取所有详细信息


推荐阅读