Форма работает как указатель? - PullRequest
3 голосов
/ 06 ноября 2011

Сегодня я попытался создать фреймворк многократного использования, и у меня не было никаких проблем сделать это ... Я создал новый файл "Game.cs", содержащий класс Game:

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 появляется его Форма , но также со свойствами, которые я установил в конструкторе Game учебный класс? Это не проблема, но я хочу знать, что произойдет, когда я установлю: this.Form = Form. Это действительно работает как указатель? Может кто-нибудь объяснить мне это поведение? Спасибо!

Ответы [ 2 ]

2 голосов
/ 06 ноября 2011
class Game
{
    Form Form;
}

Здесь поле Form - это просто ссылка на другую форму, где вы получаете эту ссылку в конструкторе класса Game. Обычно это делается для того, чтобы сохранить ссылку на форму владельца внутри дочерней формы. Когда вы устанавливаете Form свойства в конструкторе, вы фактически изменяете форму владельца.

1 голос
/ 06 ноября 2011

Да, он работает как указатель, сохраняя ссылку на саму форму.

Пока действует экземпляр game, любое изменение, сделанное в этом классе для его члена Form, будет влиять на фактическую форму.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...