VB.NET导入类

时间:2008-10-28 16:13:39

标签: vb.net import

我见过一些导入了 Class 的代码,而不是命名空间,使该类的所有静态成员/方法都可用。这是VB的一个功能吗?或者其他语言也这样做?

TestClass.vb

public class TestClass
    public shared function Somefunc() as Boolean
        return true
    end function
end class

MainClass.vb

imports TestClass

public class MainClass
    public sub Main()
        Somefunc()
    end sub
end class

这些文件位于App_Code目录中。只是好奇,因为我以前从未想过这样做,也没有在任何地方读过它。

5 个答案:

答案 0 :(得分:4)

此功能的原因之一是模拟Visual Basic 6.0的GlobalMultiUse Option for Instancing。 Visual Basic 6.0无法跨DLL边界公开模块。而是将实例化属性设置为GlobalMultiUse。它主要用于实用程序类,如导出一系列数学函数的类。

每次使用GlobalMultiUse Instancing调用类的子例程或函数时,Visual Basic 6.0在调用函数之前在后台实例化一个类。

可以滥用它来生成具有所有优点和缺点的全局函数/变量。

答案 1 :(得分:3)

是的,它是Visual Basic language feature。虽然您可以使用C#'s using statement创建别名,但似乎您无法将共享类导入范围。说实话,我只在曾经使用它的遗留项目中使用过一次。我看到了一些价值,但我担心它可能会对您未来的代码可维护性造成更大的伤害。

答案 2 :(得分:2)

每当我使用相同的库很多时,我就会使用它。一个很好的例子是System.Math。

C#不支持这一点,我发现这非常烦人。

答案 3 :(得分:1)

实际上,该功能可用,因为它是shared功能。如果要删除共享修饰符,则仍需要创建该类的实例以进行访问。

要在默认情况下访问类中的所有变量和所有函数,您可能希望继承它。

据我所知importing,一个类基本上是直接引用它,而不是创建任何类型的实例供你使用。

为了清晰起见编辑:链接是有特定于VB的链接,因此,解释了与VB.NET相关的功能

答案 4 :(得分:-4)

等等,等等......

我今天早上发现我们可以派生出任何类中的所有对象(class-s) 需要使用此方法/函数的引用;

Protected Overrides Sub Finalize()
    MyBase.Finalize()
End Sub