У меня есть форма с кнопкой, которая создает новый объект и вызывает его метод start()
.
Программа работает нормально, однако теперь я хочу создать кнопку остановки. Я, очевидно, не могу вызвать метод объекта stop()
, как в другом месте, но я просто не могу придумать правильный способ изменения моего кода.
Когда я пишу это, лучшее, что я могу придумать, - это взять MyObject myo = new MyObject("test");
и поместить MyObject myo;
наверху класса, вне методов, а затем попытаться установить его изнутри класса.
Что бы вы сделали в этой ситуации?
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], переданных в конструкцию, вы можете воссоздавать это каждый раз, когда это необходимо.
Это именно то, что вы должны делать. Это называется созданием переменной-члена.
Но убедитесь, что вы не звоните myo.stop()
, когда myo
- это null
!
Ты прав. Вы должны сохранить ссылку на объект в каком-то месте, чтобы вы могли позже вызвать его метод "stop".
Похожие вопросы
Новые вопросы
c#
C # (произносится как «резкий») - это высокоуровневый, статически типизированный язык программирования с несколькими парадигмами, разработанный Microsoft. Код C # обычно нацелен на семейство инструментов и сред выполнения Microsoft .NET, включая, среди прочего, .NET Framework, .NET Core и Xamarin. Используйте этот тег для вопросов о коде, написанном на C # или в формальной спецификации C #.