2013-03-11 62 views
0

为什么控制台应用程序之间的结构在C#VB.NET之间显得如此不同?将C#中的“程序”结构复制到VB.NET中

C#我经常创建程序类的一个实例:

namespace ConsoleApplicationX { 

    class Program { 

     static void Main(string[] args) { 

      Program p; 
      p = new Program(); 

     ... 
     ... 

VB.NET比如我有Main位于一个名为__ZooWork.vb类似如下:

Module __ZooWork 

    Sub Main() 

     ... 
     ... 

我可以做VB.NET以上代码的C#等效实现?

编辑

我试过以下,但它的错误:

enter image description here

进一步编辑

只是为了确认几项设置 - 这些不似乎已经解决了它... ...

enter image description here

+0

将'Program'类重命名为'Zoowork' – 2013-03-11 23:10:00

+0

该错误是因为该应用程序的启动对象仍然设置为原始值,请阅读[this] (http://msdn.microsoft.com/en-us/library/vstudio/17k74w0c(v=vs.100).aspx)。 – 2013-03-12 16:00:38

回答

4

这些只是您在启动新项目时可以使用的模板。当然你可以用这两种语言编写相应的代码。

Namespace ConsoleApplicationX 

    Class Program 

     Shared Sub Main() 

      Dim p As New Program() 
      ... 

     End Sub 

    End Class 

End Namespace 
+0

如果我打开一个新的控制台应用程序,然后将您的代码复制到文件Module1。 VB然后它不调试.... messa ge''Sub Main'在'ConsoleApplication1.Module1'中找不到' – whytheq 2013-03-12 14:34:27

+0

您需要[为应用程序设置启动对象](http://msdn.microsoft.com/en-us/library/vstudio/17k74w0c( v = VS.100)的.aspx)。 – 2013-03-12 14:38:01

+0

我已经将它设置为'Sub Main',但它仍然不起作用 - 我将添加一个屏幕截图到OP,以便您可以看到完整的结构 – whytheq 2013-03-12 14:45:56

1

您可能不应该创建入口点所在类型的实例。虽然这两种语言都可能是,但它并不是很好的设计。

只需要您的Main方法创建一些其他类型的实例,而不是Main本身所属的类型,并将其用于您的程序逻辑。

至于错误:

Program [...] does not contain a static 'Main' method suitable for an entry point

那是因为你的Main方法是不是正确的签名。它应该是:

Shared Sub Main() 

End Sub 

Shared是很重要的(它是static在C#中的等价物,它表明你并不需要这种类型的实例调用的方法,这是为切入点,因为它很重要在程序启动之前将没有该类型的实例

+0

+1谢谢Servy,但我并不太清楚您的解决方案中的“Main”签名。是的 - 我在执行过程中缺少'Shared',这是一个问题。此外,我正在复制p.s.w.g主要签名'Main(args As String())',这也是一个问题。关于从程序中创建程序的实例,我听说从一些非常有经验的程序员那里可以确定,我听说它不是来自其他人的好设计.....所以我猜它是一个品味问题。 – whytheq 2013-03-12 18:55:52