我刚刚练习了一些编码,并注意到我能够在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
答案 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
。