代码之家  ›  专栏  ›  技术社区  ›  Kevin

vb.net导入类

  •  4
  • Kevin  · 技术社区  · 16 年前

    我看到一些代码 等级 导入,而不是命名空间,使该类的所有静态成员/方法都可用。这是vb的一个特性吗?或者其他语言也会这样做?

    TestCopy.VB

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

    VB课件

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

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

    5 回复  |  直到 11 年前
        1
  •  4
  •   Peter Mortensen stimpy    12 年前

    此功能到位的原因之一是要模拟Visual Basic 6.0的GlobalMultiuse选项以进行实例化。VisualBasic6.0不能使模块跨DLL边界公开。而是将Instancing属性设置为 GlobalMultiUse . 它主要用于实用程序类,如导出一系列数学函数的类。

    每次调用类的子例程或函数时, GlobalMultiUse Instancing ,VisualBasic6.0在调用函数之前在后台实例化类。

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

        2
  •  3
  •   Bob King    16 年前

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

        3
  •  2
  •   Jonathan Allen    16 年前

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

    C不支持这一点,我觉得这很烦人。

        4
  •  1
  •   thismat    16 年前

    实际上,这个函数是可用的,因为它是 shared 功能。如果要删除共享修饰符,您仍然需要创建类的实例来访问它。

    为了在默认情况下访问类中的所有变量和所有函数,您需要继承它。

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

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

        5
  •  -4
  •   gumuruh    13 年前

    等等,等等,等等……

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

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