У меня есть форма с кнопкой, которая создает новый объект и вызывает его метод start().

Программа работает нормально, однако теперь я хочу создать кнопку остановки. Я, очевидно, не могу вызвать метод объекта stop(), как в другом месте, но я просто не могу придумать правильный способ изменения моего кода.

Когда я пишу это, лучшее, что я могу придумать, - это взять MyObject myo = new MyObject("test"); и поместить MyObject myo; наверху класса, вне методов, а затем попытаться установить его изнутри класса.

Что бы вы сделали в этой ситуации?

c#
2
wil 26 Авг 2011 в 00:17

3 ответа

Лучший ответ

Все зависит от объема.

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

class MyForm
{
   private MyObject myobject;

   private MyForm(){
     // create the object
     myobject = new MyObject;
   }

   private void Start_Click(){
     myobject.start();
   }
   private void Stop_Click(){
     myobject.stop();
   }
 }

Если на этот объект постоянно ссылаются, вы можете следовать одноэлементному шаблону.

Если это что-то, что вы можете воссоздать на основе аргументов [an / the], переданных в конструкцию, вы можете воссоздавать это каждый раз, когда это необходимо.

3
Brad Christie 25 Авг 2011 в 20:28

Это именно то, что вы должны делать. Это называется созданием переменной-члена.

Но убедитесь, что вы не звоните myo.stop(), когда myo - это null!

3
Daniel A. White 25 Авг 2011 в 20:19

Ты прав. Вы должны сохранить ссылку на объект в каком-то месте, чтобы вы могли позже вызвать его метод "stop".

3
David 25 Авг 2011 в 20:20