2011-12-18 2 views
1

У меня есть основная форма, где, когда пользователь нажимает кнопку, появляется подсказка. Кончик шара - это объект, созданный в моем классе основной формы из моего класса BalloonTip. Затем у меня есть вторая форма настроек. Когда пользователь нажимает что-либо в форме настроек, появляется и воздушный шар. В настоящее время у меня есть объект balloontip, созданный в моем основном классе, а также мой класс SettingsForm. Мои два вопроса:Неправильно ли создать объект дважды из двух разных классов?

  1. Есть ли более подходящий способ справиться с этим типом ситуации?
  2. Если вы создаете объект дважды по 1 в каждом классе, вызовет ли он какой-либо двусмысленности в компиляторе, если объекты имеют одинаковое имя (т. Е. ObjectBalloon)?
+2

Нет проблем с наличием нескольких экземпляров класса. –

+0

Почему он создается на стороне сервера в первую очередь? – lucifurious

+0

И без проблем с двумя переменными с тем же именем, если они разделены областью. – Patrick

ответ

3

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

Так, например:

public void DoSomething() 
{ 
    BalloonTip b = new BalloonTip(); 

    DoSomethingElse(); 
} 

public void DoSomethingElse() 
{ 
    BalloonTip b = new BalloonTip(); 
} 

даст вам два разных экземпляра BalloonTip, которые оба называются «б», но оба они действуют только в пределах той функции, в которой они объявлены.

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

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

Вы также можете передать экземпляр другому методу, и в этой функции вы можете обратиться к экземпляру с помощью другого имени.

public void DoSomething() 
{ 
    BalloonTip b = new BalloonTip(); 

    DoSomethingElse(b); 
} 

public void DoSomethingElse(BalloonTip c) 
{ 
    // c points to the same instance as b in the previous function 
} 
Смежные вопросы