2011-11-06 27 views
3

今天我試圖創建一個可重用的框架,和我沒有問題,做到這一點...我創建了一個新的文件「Game.cs」包含類遊戲:表單是否像指針一樣工作?

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); 
    } 
} 

然後我加入這個文件到一個新的窗體項目,Framework_Demo,使用VisualStudio的,它包含此:

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出現他的形式與性能我設置我n的構造函數Game class?這不是問題,但我想知道當我設置時會發生什麼:this.Form = Form它真的像一個指針一樣工作嗎?有人可以向我解釋這種行爲嗎?謝謝!

+1

是的,'Form'是一個引用類型。我會補充說,擁有'Game'類的'Form'參數並不是一個很好的設計。你的用戶界面將與這個「遊戲」類非常緊密地結合在一起,你最終將在你的「Form」公共中創建所有內容,以便它可以被操縱,而你的Game類幾乎肯定會最終成爲巨大和做太多。 –

回答

2
class Game 
{ 
    Form Form; 
} 

這裏Form場只是另一種形式,你在哪裏得到的Game類的構造函數,參考參考。這通常是爲了在子表單中保留對所有者表單的引用。當您在構造函數中設置Form屬性時,您實際上正在修改所有者窗體。

+0

Upvote,非常感謝你:) – user973511

+0

不客氣。 –

1

是的,它的工作原理是將參考保存到窗體本身。

只要game實例存在,在該類中對其成員Form成員所做的任何更改都將影響實際表單。

相關問題