如何在类和模块中定义Main方法?

时间:2011-07-12 16:40:21

标签: vb.net class module

我刚刚练习了一些编码,并注意到我能够在VB .NET中使用class而不是Module。所以我将我的模块替换为类,我收到了此错误消息:

  

在'practicevb'.practicevb

中找不到具有适当签名的可访问'Main'方法

我确保在Properties > Application > Startup Objects中正确设置了启动对象。

如果我将其更改回Module,则错误消息会消失,但我希望将其保留为类,因为我的代码的其他部分已更改为类并且未返回错误消息。

Class Atic

    Sub Main()
        Console.WriteLine("Hello, this proram will calcaulate the quadratic forumla ax^2 + bx + c")
        Dim Quads As New Quads
        Quads.Calc()

        Console.ReadKey()

    End Sub

End Class

6 个答案:

答案 0 :(得分:14)

我的猜测是你的应用程序是一个命令行应用程序。使类公共和共享......

Public Shared Sub Main()

End Sub

答案 1 :(得分:2)

如果您

类是一个不同的概念,而module模块是一个函数集合,但class是一个应该实例化对象并使用的模板。

首先介绍VB.NET中的OOP基础知识here

如果您是专业

使用Shared Sub Main() ...

答案 2 :(得分:1)

Modules只是所有成员共享的类(在C#中是静态的)。

如果要将模块更改为类,只需将Shared修饰符添加到其成员中:

Shared Sub Main() ...

虽然,我真的认为modules are a good idea是放置Main功能的理想场所。

答案 3 :(得分:0)

需要使用Main方法作为应用程序的入口点。我需要在不实例化对象的情况下可以调用,因为在程序启动之前无法执行此操作。

要么就像bene所说的那样只使这个方法和类静态化,或者更好地为这个入口点设置一个模块,然后实例化一个对象并从那里开始。

答案 4 :(得分:0)

对于任何未来的读者,如果您的Main()位于模块(不是类模块)中并且您仍然遇到此错误,请确保该方法不会参数。与C ++不同,VB.NET不会将命令行参数作为Main方法的参数。相反,您应该定义零参数Main()方法并使用My.Application.CommandLineArgs来访问提供的参数。在我意识到这一点之前,我撞了一下头。

答案 5 :(得分:0)

为您的项目定义一个Public Sub Main过程。仅当您在类中定义它时,才将其声明为Shared