Разве плохо создавать объект дважды из двух разных классов? - PullRequest
1 голос
/ 18 декабря 2011

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

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

1 Ответ

3 голосов
/ 18 декабря 2011

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

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

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

    DoSomethingElse();
}

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

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

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

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

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

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
}
...