2017-11-22 5 views
-1

私は賭けのシミュレータを構築する必要がある本から練習を受けました(コード修正はありません)。Form1のオブジェクトの配列を初期化する:Form {}

私はこのクラスのグレイハウンドクラスと4匹の犬を持っています。 私はそれらをグレイハウンドの配列に入れて、コードの初めに初期化して、自分のフォームのすべてのメソッドの範囲に入れたいと思います。 ここではコードの一部は、それが明確になります。

public partial class Form1 : Form 
{ 
    Greyhound dog1 = new Greyhound(); 
    Greyhound dog2 = new Greyhound(); 
    Greyhound dog3 = new Greyhound(); 
    Greyhound dog4 = new Greyhound(); 

    Guy joe = new Guy() { name = "Joe", myBet = null, cash = 50}; 
    Guy bob = new Guy() { name = "Bob", myBet = null, cash = 75 }; 
    Guy al = new Guy() { name = "Al", myBet = null, cash = 45 }; 

    Greyhound[] dogs = new Greyhound[4] { dog1, dog2, dog3, dog4 }; //Here's the problem 

    public Form1(){ ..... 

しかし、私は私の配列を初期化しようとすると、それは彼が

は何が問題で、DOG2などDOG1を見つけることができないようですか? これらの変数を初期化してすべてのメソッドの正しいスコープにするための簡単な方法はありますか? "public"を使用してForm1(){}で宣言しようとしましたが、どちらも動作していません...

+0

_ "彼は見つけることができないようです" _あなた自身の解釈をコンパイラエラーには与えず、それらをそのまま語ります。他のフィールドを参照する配列初期化をコンストラクタに移動します。 – CodeCaster

+0

@mituwコードをメソッドに入れます。彼のコードは方法ではありません。いずれにしても、これは複製です。 – john

+0

ああ、あなたは正しい@johnです。DoT ... DoT ...あなたの割り当てコードは、他の人が既に指摘しているようにコンストラクタにあるべきです。 – mituw16

答えて

0

宣言の場所は正しいです。代入をコンストラクタに移動してみてください。

+0

すべての回答と重複して申し訳ありません。私は思考を掲示する前に、Googleやここでさえ多く見た。 恥ずかしそうな時間だけど...コンストラクタのコンセプトは分かっているけど、以前は使わなかった。 私はそれを見ます:) 良い一日を。 – DoT