2013-03-11 57 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