2017-11-22 2 views
-1

내기 시뮬레이터를 구축해야하는 곳에서 책 (코드 수정 없음)을 연습했습니다.Form1의 오브젝트 배열 초기화 : Form {}

나는 그레이하운드 클래스와이 클래스의 4 마리를 가지고 있습니다. 그레이 하트 (Greyhound)의 배열에 넣고 코드의 시작 부분에서 초기화하여 모든 형식의 메서드에 포함 시키려고합니다. 다음 코드 조각, 그것은 분명있을 것입니다 :

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

아, 당신 말이 맞아요 @ 존. .. Do not ... DoT ... 다른 사람이 이미 지적한대로 할당 코드가 생성자에 있어야합니다. – mituw16

답변

0

선언의 위치가 정확합니다. 할당을 생성자로 이동해보십시오.

+0

모든 답변과 중복에 대해 감사드립니다. 나는 생각을 게시하기 전에 구글과 심지어 여기에 많이 보았다. 수치스러운 시간이지만 ... 나는 컨스트럭터의 개념을 알고 있지만 전에는 사용하지 않았다. 나는 그것을 볼 것이다 :) 좋은 하루 되십시오. – DoT