2011-11-06 2 views
3

오늘은 내가 재사용 가능한 프레임 워크를 만들려고, 내가이 일을 아무 문제가 없었다 ... 나는 새 파일 "Game.cs"클래스 게임을 포함을 만들어 :Form은 포인터처럼 작동합니까?

class Game 
{ 
    Form Form; 

    public Game(Form Form, int Width, int Height) 
    { 
     //Set Form 
     this.Form = Form; 
     this.Form.MaximizeBox = false; 
     this.Form.FormBorderStyle = FormBorderStyle.Fixed3D; 
     this.Form.Size = new Size(Width, Height); 
    } 
} 

그럼 난에이 파일을 추가 으로 VisualStudio와 그것을 사용하는 새로운 형태의 프로젝트, Framework_Demo는 포함이 :

namespace Framework_Demo 
{ 
    public partial class Form1 : Form 
    { 
     public Form1() 
     { 
      InitializeComponent(); 
     } 

     private void Form1_Load(object sender, EventArgs e) 
     { 
      //Here I created a new Object game using class Game 
      Game game = new Game(this, 600, 600); 
     } 
    } 
} 

아마이 간단하고 내 질문은 폐기 될 수 있지만 수있는 이유는 Framework_Demo 그의 양식을 나타납니다뿐만 아니라 내가 설정 한 속성 디버깅 할 때Game 클래스의 costructor에서? 문제는 아니지만 this.Form = Form를 설정할 때 어떤 일이 발생하는지 알고 싶습니다. 정말 포인터처럼 작동합니까? 누군가이 행동을 나에게 설명 할 수 있습니까? 고맙습니다!

+1

예, '양식'은 참조 유형입니다. 나는'Form' 인자를 취하는'Game' 클래스를 갖는 것이 아주 좋은 디자인은 아니지만 추가 할 것입니다. 당신의 UI는이'Game' 클래스와 매우 밀접하게 연결될 것입니다, 당신은'Form' public에서 모든 것을 만들어서 조작 할 수있게 될 것이고,'Game' 클래스는 거의 확실하게 끝날 것입니다 거대하고 너무 많이하고있다. –

답변

2
class Game 
{ 
    Form Form; 
} 

다음은 Form 필드는 Game 클래스의 생성자에서 해당 참조를 얻는 또 다른 형태의, 단지 참조입니다. 이것은 일반적으로 자식 폼 내부의 소유자 폼에 대한 참조를 유지하기 위해 수행됩니다. 생성자에서 Form 속성을 설정하면 실제로 소유자 양식이 수정됩니다.

+0

Upvote, 대단히 감사합니다. – user973511

+0

당신을 진심으로 환영합니다. –

1

그렇습니다. 참조을 양식 자체로 유지함으로써 포인터의 일종으로 작동합니다.

game 인스턴스가있는 한 해당 클래스에서 변경된 내용이 Form 구성원으로 변경되면 실제 양식에 영향을 미칩니다.

관련 문제