1

ユーザーがボタンをクリックするとバルーンチップが表示されるメインフォームがあります。バルーンチップは、BalloonTipクラスのメインフォームクラス内でインスタンス化されたオブジェクトです。次に、設定用の2番目のフォームがあります。ユーザーが設定フォームで何かをクリックすると、バルーンのヒントも表示されます。現在、MainクラスとSettingsFormクラスでballoontipオブジェクトがインスタンス化されています。私の2つの質問は次のとおりです。

  1. この種の状況に対処するためのより適切な方法はありますか?
  2. 各クラスで1回ずつオブジェクトを2回作成する場合、オブジェクトが同じ名前(つまり、objectBalloon)であると、コンパイラーに何らかのあいまいさが生じますか?
4

1 に答える 1

3

オブジェクトをインスタンス化する場合、これは常に特定のスコープ内にあります。

したがって、たとえば:

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

    DoSomethingElse();
}

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

BalloonTipの2つの異なるインスタンスを提供します。これらは両方とも「b」と呼ばれますが、どちらも宣言されている関数のスコープ内でのみ有効です。

クラス定義は、複数のオブジェクトをインスタンス化できる青写真として表示されます。1つのスコープでは、複数のインスタンスを持つことができますが、それらは異なる名前を持つ必要があります。

スコープが重複しない場合は、同じ名前を使用して別のインスタンスを指すことができます。

インスタンスを別のメソッドに渡すこともでき、その関数でインスタンスを別の名前で参照できます。

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
}
于 2011-12-18T18:47:47.987 に答える