Создание нового экземпляра объекта при нажатии кнопки - PullRequest
3 голосов
/ 08 ноября 2010

Кажется, это должно быть достаточно просто, но у меня проблемы с оборачиванием моего мозга вокруг него.Обычно вы объявляете объект одним из нескольких способов:

ClassName a;
a = new ClassName();

или

ClassName a = new ClassName();

и т. Д.время компиляции я запутался, когда я должен был написать код, чтобы это происходило во время выполнения.То, что я хочу сделать, - это создать новый экземпляр класса при нажатии кнопки.Но что я не понимаю, так это как имя объекта будет называться, если это происходит при нажатии кнопки?

Ответы [ 4 ]

5 голосов
/ 08 ноября 2010

Еще хуже, у объектов вообще нет Имени.
Переменная, в которой вы находитесь, является ссылкой на объект.

Имеет значение, к чему вы решите принадлежать:

void ButtonClick_H1(...)
{
  ClassName a;          //local variable
  a = new ClassName();  // object belongs to this method
}


private  ClassName anObject;   // class field
void ButtonClick_H2(...)
{ 
  anObject = new ClassName();  // object belongs to  'this' Form
}
2 голосов
/ 08 ноября 2010
public partial class Form1
{
    Classname myClass;

    public void Button1_Click(...)
    {
          myClass = new Classname();
    }
}

1 голос
/ 08 ноября 2010

Точно так же, как вы обычно называете объект.

Вам нужно подключиться к событию Click кнопки:

this.Button.Click += new RoutedEventHandler(Button_Click);

Тогдаиспользуйте что-то вроде

private void Button_Click(object sender, RoutedEventArgs e)
{
    ClassName a = new ClassName();
}
1 голос
/ 08 ноября 2010

Итак, вы создаете объект, используя код, который вы показали выше, и это будет новый экземпляр вашего класса.Если вы объявили внутреннюю область действия метода, он перестанет существовать после метода (если на него нет внешних ссылок), но если вы объявите его вне метода как переменную класса, он останется до тех пор, пока класс не будет уничтожен.

...