在不使用类的命名空间的情况下声明对象

时间:2013-12-05 16:08:52

标签: vb.net import namespaces

我有一个名为MyWidget的类库项目,唯一的类名为MyWidget

在另一个项目中,我添加了对我的类库的引用,在我的新课程中,我尝试输入

Imports MyWidget

Imports MyWidget.MyWidget

但是,在我的课程后期尝试创建新引用时,Visual Studio不允许我输入:

Private widget As MyWidget

然而,Visual Studio给了我一个“预期的类型”。错误并强迫我也包括命名空间,如下所示:

Private widget As MyWidget.MyWidget

我阅读了有关Imports声明的MSDN documentation。在声明对象时我应该可以不使用命名空间,因为我在程序顶部有import语句。我已经使用标准命名空间对它进行了测试,并且它工作正常,但是当我在课堂上尝试时,它没有。

我是否遗漏了MyWidget类中的某些内容,这些内容允许我在声明对象时不使用命名空间?

我还尝试将命名空间重命名为MyClasses,可能认为Visual Studio正在使命名空间与类混淆。但是,即使有了

Imports MyClasses.MyWidget

尝试在没有MyWidget命名空间的情况下定义MyClasses对象时仍然出错。

2 个答案:

答案 0 :(得分:5)

由于Namespace和Class具有相同的名称,因此在尝试实例化MyWidget时编译器会感到困惑,尽管Imports语句。只是因为有一个Imports语句,并不意味着你不能完全定义一个类型(即使你有Imports System.IO.File,你仍然可以调用System.IO.File.WriteAllText),因此混淆了编译器结束。另一种方法是使用别名。

Imports AWidget = MyWidget.MyWidget

然后..

Dim objWidget As New AWidget

答案 1 :(得分:1)

问题似乎是命名空间和具有相同名称的类。将命名空间更改为MyClasses并将类更改为MyWidget后,以下语句有效:

Imports MyClasses

...

Private widget as MyWidget