Vb.net 如何在类和模块中定义主方法?

Vb.net 如何在类和模块中定义主方法?,vb.net,class,module,Vb.net,Class,Module,我只是在练习一些编码,并注意到我能够在VB.NET中使用类而不是模块。因此,我将模块替换为类,并收到以下错误消息: 在“practicevb”中未找到具有适当签名的可访问“Main”方法。practicevb 我确保在Properties>Application>startup Objects中正确设置了启动对象 如果我将其更改回模块,错误消息将消失,但我希望将其保留为类,因为我的代码的其他部分更改为类,并且没有返回错误消息 Class Atic Sub Main()

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

在“practicevb”中未找到具有适当签名的可访问“Main”方法。practicevb

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

如果我将其更改回模块,错误消息将消失,但我希望将其保留为类,因为我的代码的其他部分更改为类,并且没有返回错误消息

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
只是共享所有成员的类(在C#中是静态的)

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

Shared Sub Main() ...

尽管如此,我还是认为这是一个放置
主功能的理想位置。

如果你是新手,请将
主功能放置在

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

首先浏览VB.NET中的OOP基础知识

如果您是专业人士


使用
Shared Sub-Main()
..

我猜您的应用程序是一个命令行应用程序。让课堂公开和共享

Public Shared Sub Main()

End Sub

Main方法是应用程序的入口点。我需要在不实例化对象的情况下被调用,因为在程序启动之前没有办法这样做


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

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

为您的项目定义一个
公共Sub-Main
过程。声明它为
Shared
当且仅当你在一个类中定义它时。

我认为他被C#!:-)中的核心OOP搞糊涂了我想他是新来的
OOP
编程高手,所以我想知道像
(C#中的静态)这样的东西。
会让他困惑:-)好的,很酷,谢谢你提供的所有信息。诺利亚斯的建议奏效了。我想我会把它作为一个模块,因为这听起来是个好主意。