为什么导入需要项目名称而不仅仅是对象?

时间:2014-08-28 15:33:44

标签: vb.net namespaces

我花了一些时间来理解我将要描述的问题,所以如果描述混乱,请告诉我......

我有一个名为“cProp”的对象,它定义了许多子类。要在项目的其他文件中引用这些类,我必须做类似......

的操作
Dim cp = New cProp.InflationRow()

我明白为什么会这样;由于InflationRow在cProp的“内部”,我需要告诉它在哪里找到它。细

但是,这当然变得单调乏味,所以有时候你想修复它......

Imports cProp

为什么不起作用?为什么我要......

Imports ProjectName.cProp

您可能想知道为什么我关心,但这些文件在许多具有不同名称的项目中使用。因此,如果我使用Imports,我必须在一堆地方更改项目名称。我知道Namespace可能是我想要的解决方案,对吗?

我的困惑源于这样一个事实:编译器可以很好地找出我在代码中指的是哪个cProp(这是唯一的一个),为什么不在Imports?我想我在这里缺少一些基本的东西。

1 个答案:

答案 0 :(得分:0)

这是因为您的项目有一个根命名空间 - 您可以在项目属性中看到这一点。您可以在项目属性中删除它 - 这将允许您只使用其他项目中的类名。但是,名称空间是组织类的好方法。在VB中,项目默认具有根命名空间,您无法在代码文件中看到它。

在您的项目中,由于它似乎都在同一个根命名空间内,因此您不必使用根命名空间限定根命名空间中的代码。 "进口"语句不在命名空间内(只有类型可以在命名空间内) - 这就是为什么你必须在那里提供完整的资格。