2011-07-12 7 views
6

私はちょうどいくつかのコーディングを練習していて、VB.NETではModuleの代わりにクラスを使用できることに気づいた。だから私はクラスに私のモジュールを交換して、私はこのエラーメッセージました:クラスとモジュールのMainメソッドを定義するにはどうすればよいですか?

適切なシグネチャを持つんがアクセスできる「メイン」メソッドは、私は確信して起動することを作らpracticevb'.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 
+0

すべての情報をおかげでよかった。 NoAliasが何を提案したか私は良いアイデアのように聞こえるので、私はモジュールとしてそれを保つと思います。 – nhat

答えて

12

私の推測では、あなたのアプリケーションは、コマンドラインアプリケーションであるということであるVB.NET hereにOOPの基本ものの

を行きます。クラスをPublicおよびSharedにします。

Public Shared Sub Main() 

End Sub 
0

Modulesは、すべてのメンバーが共有されるクラスです(C#では静的です)。

あなたがクラスにモジュールを変更したい場合は、単にそのメンバーにShared修飾子を追加します。

Shared Sub Main() ... 

が、私は本当にmodules are a good ideaを考えると、あなたのMain機能を置くのに最適な場所。

+0

私は彼がC#でハードコアOOPと混同されると思います!:-) – Sudantha

+0

彼は 'OOP'でプログラミングするのは初めてだと思うので、'(C#の静的な) 'のようなものを混乱させるでしょう:-) – Sudantha

2

あなたはクラス

クラスにNEWある場合moduleモジュールとは別の概念は、関数の集まりですが、classは、オブジェクトと使用をインスタンス化する必要があるテンプレートです。

まず、あなたがプロ

使用Shared Sub Main()している場合...

0

メインメソッドは、アプリケーションのエントリポイントとして必要です。あなたのプログラムが始まる前に、これを行う方法がないので、私はオブジェクトをインスタンス化せずに呼び出し可能にする必要があります。

このメソッドと静的クラスをこのようにするか、このエントリポイントだけのモジュールを用意して、オブジェクトをインスタンス化してそこから移動することをお勧めします。

0

Main()モジュール(クラスモジュールではない)にあり、まだこのエラーが発生している場合は、このメソッドでパラメータが使用されていないことを確認してください。 C++とは異なり、VB.NETはMainメソッドのパラメータとしてコマンドライン引数を取っていません。代わりに、ゼロパラメータのMain()メソッドを定義し、を使用して、指定されたパラメータにアクセスする必要があります。私はこれを実現する前に頭を強く叩いた。

関連する問題